> Now although this behaviour was surprising after somethought > I think I may understand why things go wrong, but I certainly > don't understand the result I got. I would think an error like: > > TypeError: call() takes exactly 2 arguments (1 given) > > would have been more appropiate. > > > Am I missing something? > Is it a bug? > Maybe both?
Maybe I'm missing something - but I exactly get that error if I don't use that try: except: of yours: For this ----------------- def positive(f): def call(self, u): if u < 1: print 'Not Positive' raise ValueError return f(self, u) return call class Incrementor: def __init__(self, val=0): self.value = val @positive def __call__(self, term = 1): print 'incrementing' self.value += term return self.value inc = Incrementor(0) print inc(1) print inc() print inc(3) -------------------- I get this result: [EMAIL PROTECTED]:~$ python2.4 /tmp/test.py incrementing 1 Traceback (most recent call last): File "/tmp/test.py", line 24, in ? print inc() TypeError: call() takes exactly 2 arguments (1 give -- Regards, Diez B. Roggisch -- http://mail.python.org/mailman/listinfo/python-list