class Proxy:
def __init__(self, obj):
# self._obj = obj,则调用__getattr__就会死循环,而改成 self._obj = obj,则不会;
self.obj = obj
def __getattr__(self, item):
return getattr(self.obj, item)
class Spam:
def __init__(self, x):
self.x = x
def bar(self, y):
print('Spam.bar:', self.x, y)
if __name__ == "__main__":
spam = Spam(10.05)
proxy = Proxy(spam)
print(proxy.x)
仅仅是将 Proxy 实例属性由_obj 的成 obj,就会造成__getattr__无限循环,这个怎么理解?谢谢。
def __init__(self, obj):
# self._obj = obj,则调用__getattr__就会死循环,而改成 self._obj = obj,则不会;
self.obj = obj
def __getattr__(self, item):
return getattr(self.obj, item)
class Spam:
def __init__(self, x):
self.x = x
def bar(self, y):
print('Spam.bar:', self.x, y)
if __name__ == "__main__":
spam = Spam(10.05)
proxy = Proxy(spam)
print(proxy.x)
仅仅是将 Proxy 实例属性由_obj 的成 obj,就会造成__getattr__无限循环,这个怎么理解?谢谢。