描述符

Posted gdy123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了描述符相关的知识,希望对你有一定的参考价值。

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

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

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

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































以上是关于描述符的主要内容,如果未能解决你的问题,请参考以下文章

描述符

python——描述符

系统描述符类型,段描述符类型和段描述符表

linux如何查看某个进程的文件描述符(查看文件描述符查看描述符)(文件描述符socket描述符不断递增不断增加问题排查)ls -l /proc/[pid]/fd

Shell自定义输入输出文件描述符

Linux 文件描述符