我陷入了Python委托问题。我阅读了以下程序:
class wrapper:
def __init__(self,object):
self.wrapped=object
def __getattr__(self,attrname): #reload the dot-calculation
print('Trace:', attrname) #print the attribute of the object
return getattr(self.wrapped, attrname) #execute the attributes of the object
i=[1,2,3]
myWrapper=wrapper(i)
wrapper.wrapped #execute the dot-calculation
wrapper.append(4) #execute the dot-calculation
在我看来,点计算的这两个执行都应打印“ Trace”。但是,我只获得一次Trace。
wrapper.wrapped #never print 'Trace'
wrapper.append(4) #print ('Trace:', append')
我不明白这一点。 funtion__getattr__是否已重新加载?为什么在第一次执行期间什么都没打印?
感谢您的解释!