443086692@qq.co 发表于 2018-4-21 15:55:33

Python 魔法方法求助__setattr__

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.__setattr__(name,value)       
        def getArea(self):
                return self.width*self.height

以上代码出自小甲鱼《零基础入门学习Python》第45讲 。
setattr魔法方法只要发生赋值就会被调用,容易陷入死循环。
当name=='square'条件成立时候,self.width=value发生赋值操作,在此处应该同样会触发setattr魔法方法,从而导致进入死循环出错。
小白表示无法理解,为何该类能正常实例化,不会报错??求大神指点下

ba21 发表于 2018-4-21 20:51:10





页: [1]
查看完整版本: Python 魔法方法求助__setattr__