欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python的___setattr__魔方方法

程序员文章站 2022-09-10 15:23:54
___setattr__魔方方法一定要注意防止无限递归当在此方法内部给属性赋值的时候,那会调用此方法,又会重新赋值,无限重复最后要归于super是种解决方法。或者用dict方法。 1 class Recangle: 2 def __init__(self,width = 0,heigh = 0): ......
 ___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