| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
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魔法方法,从而导致进入死循环出错。 
小白表示无法理解,为何该类能正常实例化,不会报错??求大神指点下
 |   
 
 
 
 |