魔术方法45讲
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:
#self.name = value 返回到init
super().__setattr__(name,value)
def getArea(self):
return self.width * self.height
else那里有问题:
1、self.name为什么会回到init那里
2、super()那句是什么意思 1、self.name为什么会回到init那里
因为self.name=value就相当于重新赋值了,而每次赋值都回到init中,这便是这个类存在的意义~
2、super()那句是什么意思
__setattr__是一个魔法方法,在实现功能之外,还要继承之前__setattr__的其他内容,避免出现错误。 1. 不是返回到 init 中,而是返回到 __setattr__ 中,因为设置了实例属性就会自动调用 __setattr__
2. 就是调用父类的 __setattr__(用于设置属性),把一切都交给父类去处理
页:
[1]