看代码
class Rectangle:def __init__(self,width = 0,height = 0):
self.width = width
self.height = height
def __setattr__(self,name,value):
if name == 'square':
self.width = value
self.height = value
else:
super().__setattr__(name,value)
self.name = value
def getArea(self):
return self.width * self.height
这个代码有啥毛病运行一直报错
这个问题出现在那个else语句,因为初始化为一个举行对象赋宽高的初始值,会调用__setAttr__方法,而因为这个属性不是square,会执行else语句,而下面又进行了self.name = value,继续调用该方法,进入了死循环 爱学习的懒懒君 发表于 2019-1-5 16:24
这个问题出现在那个else语句,因为初始化为一个举行对象赋宽高的初始值,会调用__setAttr__方法,而因为这 ...
不是有super方法吗 a2421480 发表于 2019-1-5 18:04
不是有super方法吗
你是有super方法,但之后不是又调用了self.name = value这条属性赋值语句吗,就是有调用了这个对象的__setattr__方法,产生死循环了 爱学习的懒懒君 发表于 2019-1-5 19:49
你是有super方法,但之后不是又调用了self.name = value这条属性赋值语句吗,就是有调用了这个对象的__se ...
意思是我要把self.name = value 给删了是吧
页:
[1]