Python委托

时间:2018-07-17 07:50:32

标签: python

我陷入了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__是否已重新加载?为什么在第一次执行期间什么都没打印?

感谢您的解释!

0 个答案:

没有答案