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方法。
一定要注意防止无限递归
当在此方法内部给属性赋值的时候,那会调用此方法,又会重新赋值,无限重复
最后要归于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
上一篇: php中对2个数组相加的函数
下一篇: VB.NET 定义多行文本字符的几种方式