1
self.value2 = 2
class Mixin:
def __getattr__(self, attr):
try:
attr_value = getattr(self, attr)
except AttributeError:
attr_value = getattr(self.a, attr)
return attr_value
class B(Mixin):
def __init__(self):
self.a = A()
self.value3 = 3
self.value4 = 4
if __name__ == '__main__':
b = B()
print(b.value3) # 3
print(b.value1) # RangeError: Maximum call stack size exceeded on line 9 in main.py
Объясните плз, почему такое поведение с рекурсией? И как можно это сделать?(думаю идея того, что нужно, по коду понятна)
потому что getattr вызовет снова self.__getattr__
Зачем ты в __getattr__ вызываешь getattr(self)?
Обсуждают сегодня