|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Rectangle:
def __init__(self,width = 0,height = 0):
self.width = width
self.height = height #这两个赋值会调用setattr
def __setattr(self,name,value):
if name == 'square':
self.width = value
self.height = value
else:
#self.name = value #这赋值会调用setattr 容易无限递归
#方法一
#super().__setattr__(name,value) #调用基类则不活出错quare
#方法二
self.__dict__[name] = value
def getArea(self):
return self.width * self.height
理想情况下运行:
>>> r1 = Rectangle(4,5)
>>> r1.getArea()
20
>>> r1.square = 10
>>> r1.getArea()
100
但是现实却是:
>>> r1 = Rectangle(4,5)
>>> r1.getArea()
20
>>> r1.square = 10
>>> r1.getArea()
20
感觉>>> r1.square = 10 没起作用,就没有改变width 和height 的值,各位,这个怎么解释呀?(想吐槽一句,我太难了!)
你这个 r1.square = 10,其实对整个Rectangle的类来说没啥影响,因为这句话相当于只是给r1这个实例增加了一个变量,并没有起到什么作用
|
|