"""
__getattr__的用法:
__getattr__()是仅当属性不能在实例的__dict__或它的类(类的__dict__),
或父类其__dict__中找到时,才被调用。一般在代码中包含一个对getattr()
內建函数的调用每一个类都会用一个字典,把它包含的属性放到自己的字典
里(这是内建的),
__getattr__的用法:
__getattr__()是仅当属性不能在实例的__dict__或它的类(类的__dict__),
或父类其__dict__中找到时,才被调用。一般在代码中包含一个对getattr()
內建函数的调用每一个类都会用一个字典,把它包含的属性放到自己的字典
里(这是内建的),
"""
class Preson:
def __init__(self):
pass
def main(self):
print u"出门"
def say(self):
print u'今天天气真的很不错'
class Decorate:
def __init__(self,event):
self.event = event
#装饰作用
def main(self):
print u'我穿着漂亮的衣服'
self.event.main()
#实例化对象时候在对象中找不到相应的方法,才会调用这个方法
def __getattr__(self,name):
return self.fun
#可以使用下面的方法调用Preson的属性
#return getattr(self.event,name)
def fun(self):
print u'找不到方法才调用了我'
if __name__ == '__main__':
p = Preson()
d = Decorate(p)
d.main()
d.say()
#输出如下>>>
#我穿着漂亮的衣服
#出门
#找不到方法才调用了我