码迷,mamicode.com
首页 > 其他好文 > 详细

描述符

时间:2018-10-14 01:45:32      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:getx   font   rop   rip   tin   恢复   let   strong   instance   

---恢复内容开始---

一、描述符(将某种特殊类型的类的实例指派给另一个类的属性)

__get__(self, instance, owner):    用于访问属性,它返回属性的值

__set__(self, instance, value):     将在属性分配操作中调用,不返回任何内容

—delelte__(self, instance):           控制删除操作,不返回任何内容

二、描述符代码

 

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()

 

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 __del__(self, instance):
self.fdel(instance)

class C:
def __init__(self):
self._x=None

 

def getX(self):
return self._x

 

def setX(self, value):
self._x=value

 

def delX(self):
__delete__self._x

 

x=Myproperty(getX, setX, delX)

 

 

三、实例温度计

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, owener):
return instance.cel * 1.8 + 32

def __set__(self, instance, value):
instance.cel=(float(value)-32)/1.8

class Temperature:
cel = Celsius()
fah = Fahrenheit()

---恢复内容结束---

描述符

标签:getx   font   rop   rip   tin   恢复   let   strong   instance   

原文地址:https://www.cnblogs.com/gdy123/p/9784761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!