简单理解装饰器在Python里面的作用

  例子里面说明太少,很难自己去理解,我查阅和别人讨论了一下,大概思路如下:

  首先呢,运行将Account类实例化对象为acc.然后将acc实例的属性amount修改为20,这时候就调用了最下面那个amount方法,这个方法首先检查输入的数是否为负值,如果为负值则打印"sorry",然后打印"dollar"这句,打印的同时,调用获取属性amout,这时@property装饰器下的amount函数就会返回类的amount属性,后面的print("CNY")同理。

1,装饰器的作用应该是在原来的方法上加上额外的功能.比如你调用amount这个类方法,你需要用acc.amout().但是加上@property这个装饰器以后,你就可以用acc.amount来获得相应的属性了

2 ,输入-100 是因为类中包含了检测,如果是负数,则返回默认值20,实际上装饰器改写了你原本定义的方法.比如类中定义的amount方法

3,一个是在获取属性时调用,一个是在修改属性时调用.这也是两个装饰器property和amout.setter的区别,Python里面估计默认property是获取属性时调用,setter是修改属性时调用

猜你喜欢

转载自www.cnblogs.com/LifeIsHardIUsePyhon/p/9027131.html