Рассмотрим следующий пример кода (python 2.7):
class Parent:
def __init__(self, child):
self.child = child
def __getattr__(self, attr):
print("Calling __getattr__: "+attr)
if hasattr(self.child, attr):
return getattr(self.child, attr)
else:
raise AttributeError(attr)
class Child:
def make_statement(self, age=10):
print("I am an instance of Child with age "+str(age))
kid = Child()
person = Parent(kid)
kid.make_statement(5)
person.make_statement(20)
можно показать, что вызов функции person.make_statement(20)
вызывает функцию Child.make_statement
через функцию Parent
__getattr__
. В функции __getattr__
я могу распечатать атрибут перед вызовом соответствующей функции в дочернем экземпляре. Пока что так ясно.
Но как передается аргумент вызова person.make_statement(20)
через __getattr__
? Как я могу распечатать номер "20" в моей функции __getattr__
?