1、描述符 将某种特殊类型的类的实例指派给另一类的属性。
class MyDecriptor: def __get__(self, instance, owner): print("getting...",self,instance,owner) def __set__(self, instance, value): print("setting",self,instance,value) def __delete__(self, instance): print("deleting",self,instance) class Test: x=MyDecriptor() test=Test() test.x test test.x="X-man" class MyProperty: def __init__(self,fget=None,fset=None,fdel=None): self.fget=fget self.fset=fset self.fdel=fdel def __get__(self, instance, owner): return self.fget(instance) def __set__(self, instance, value): self.fset(instance,value) def __delete__(self, instance): self.fdel class C: def __init__(self): self._x=None def getX(self): return self._x def setX(self,value): self._x=value def delX(self): del self._x x=MyProperty(getX,setX,delX) c=C() c.x="x-man" c._x print(c._x) del c.x print(c.x) class Celsius(): def __init__(self,value=26.0): self.value=float(value) def __get__(self, instance, owner): return self.value def __set__(self, instance, value): self.value=float(value) class Fahrenheit: def __get__(self, instance, owner): return instance.cel*1.8+32 def __set__(self, instance, value): instance.cel=(float(value)-32)/1.8 class Temperature: cel=Celsius() fah=Fahrenheit() temp=Temperature() print(temp.cel) temp.cel=30 print(temp.fah)