首页 > 其他 > 详细

描述符

时间:2018-10-14 01:37:24      阅读:193      评论:0      收藏:0      [点我收藏+]

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

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

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

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

描述符

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!