Hi, What does "return Wrapper" do in the following piece of code? Which method does it invoke? I mean "return Wrapper" invokes __init__ method?
def Tracer(aClass): class Wrapper: def __init__(self, *args, **kargs): self.fetches = 0 self.wrapped = aClass(*args, **kargs) def __getattr__(self, attrname): print('Trace: ' + attrname) self.fetches += 1 print(self.fetches) return getattr(self.wrapped, attrname) return Wrapper Actual program: def Tracer(aClass): class Wrapper: def __init__(self, *args, **kargs): self.fetches = 0 self.wrapped = aClass(*args, **kargs) def __getattr__(self, attrname): print('Trace: ' + attrname) self.fetches += 1 print(self.fetches) return getattr(self.wrapped, attrname) return Wrapper @Tracer class Spam: def __init__(self, *args): print(*args) def display(self): print('Spam!' * 8) @Tracer class Person: def __init__(self, name, hours, rate): self.name = name self.hours = hours self.rate = rate def pay(self): return self.hours * self.rate food = Spam("CARST") food.display() print([food.fetches]) bob = Person('Bob', 40, 50) print(bob.name) print(bob.pay()) print('') sue = Person('Sue', rate=100, hours=60) print(sue.name) print(sue.pay()) print(bob.name) print(bob.pay()) print([bob.fetches, sue.fetches]) -- https://mail.python.org/mailman/listinfo/python-list