___setattr__魔方方法
一定要注意防止无限递归
当在此方法内部给属性赋值的时候,那会调用此方法,又会重新赋值,无限重复
最后要归于super是种解决方法。或者用dict方法。  
 1 class Recangle:
 2     def __init__(self,width = 0,heigh = 0):
 3         self.width = width
 4         self.heigh = heigh
 5 
 6     def __setattr__(self,name,value):
 7         if name == 'square':
 8             self.width = value
 9             self.heigh = value
10         else:
11             print('else被执行了')
12             super().__setattr__(name,value)
13             
14 
15     def getArea(self):
16         return self.width * self.heigh
17 
18 a = Recangle(4,5)
19 print(a.getArea())
20 a.square = 10
21 print(a.getArea())
22 a.width = 100
23 print(a.getArea())
24 
25     
###运行结果
else被执行了
else被执行了
20
else被执行了
else被执行了
100
else被执行了
1000

  

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄