标签:
#!/usr/bin/env python # -*- coding:utf-8 -*- #====> __setattr__ 重写 设置类对象属性值时候调用的魔法方法 __getattr__(self,name)取得类属性 # __getattribute__(self,name)在取得属性前调用,比__getattr__更先调用 , __delattr__(self,name)删除属性时候调用 class Rectangle: def __init__(self,wid,high):#重写类初始化方法 self.wid=wid self.high=high def __setattr__(self, key, value): #重写设置类属性值的方法 ,当设置类任意属性会调用此方法 if key=="square" :#如果给类属性square 赋值 则设置高 宽 为当前square属性设置的值 self.wid=value self.high=value else: super().__setattr__(key,value) #否则调用父类的设置属性值魔法方法方法 def getArea(self): return self.high*self.wid r1 = Rectangle(4,5) print(r1.getArea()) r1.square=10 print(r1.high)# 10 print(r1.wid)# 10 print(r1.getArea())# 100
标签:
原文地址:http://www.cnblogs.com/whzym111/p/5822927.html