On Tue, 15 Nov 2005 18:44:23 +0100, bruno at modulix wrote: > Another solution to this is the use of a 'marker' object and identity test: > > _marker = [] > class A(object): > def __init__(self, n): > self.data =n > def f(self, x = _marker): > if x is _marker: > x = self.data > print x
I would like to see _marker put inside the class' scope. That prevents somebody from the outside scope easily passing _marker as an argument to instance.f. It also neatly encapsulates everything A needs within A. class A(object): _marker = [] def __init__(self, n): self.data =n def f(self, x = _marker): if x is self.__class__._marker: # must use "is" and not "==" x = self.data print x Note the gotcha though: in the method definition, you refer to a plain _marker, but in the method code block, you need to qualify it. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list