• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解Python魔法方法之描述符类

    描述符类要求:

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

    至少要实现以下的一个方法:

    •__get__(self, instance, owner)
    –用于访问属性,它返回属性的值
    
    •__set__(self, instance, value)
    –将在属性分配操作中调用,不返回任何内容
    
    •__delete__(self, instance)
    –控制删除操作,不返回任何内容
    

    eg:

    >>> 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()   #取Mydecriptor类的实例指派给Test类的属性x
    

    测试:

    eg:

    >>> 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(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):
            del self._x
        x = MyProperty(getX,setX,delX)
    
        
    >>> c = C()
    >>> c.x = "HELLOW"
    >>> c.x
    'HELLOW'
    >>> c._x
    'HELLOW'
    >>> del c.x
    >>> c._x
    

    eg:

    摄氏度转华氏度:华氏度=摄氏度*1.8+32

    要求:

    •先定义一个温度类,然后定义两个描述符类用于描述摄氏度和华氏度两个属性。
    •要求两个属性会自动进行转换,也就是说你可以给摄氏度这个属性赋值,然后打印的华氏度属性是自动转换后的结果。

    ss Celsius:  #摄氏度描述符类
        def __init__(self,value = 26.0):#self为描述符类自身(此为摄氏度描述符类)的实例(此为cel)
            self.value = float(value)
        def __get__(self,instance,owner):#instance是这个描述符的拥有者所在的类的实例(此为temp)
            return self.value
        def __set__(self,instance,value):#owner是这个描述符的拥有者所在的类本身(此为温度类)
            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 
            ## instance.cel 则会执行Temperature.cel,接着执行Celsius类中的__set__方法
            
    class Temperature:   #温度类
        cel = Celsius()   #设置摄氏度属性(描述符类的实例指派给了温度类的属性)
        fah = Fahrenheit()# temp.fah ,当属性fah被赋值的时候,则会执行Fahrenheit描述符类的__set__方法
    						
    >>> temp = Temperature()
    >>> temp.cel
    26.0
    >>> temp.fah
    78.80000000000001
    >>> temp.fah = 78.8
    >>> temp.cel
    25.999999999999996
    

    到此这篇关于详解Python魔法方法之描述符类的文章就介绍到这了,更多相关python描述符类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python异常类型以及处理方法汇总
    • Python绘制分类图的方法
    • python迭代器自定义类的具体方法
    • Python类型转换的魔术方法详解
    • class类在python中获取金融数据的实例方法
    • Python类绑定方法及非绑定方法实例解析
    • 利用python批量爬取百度任意类别的图片的实现方法
    • Python类方法总结讲解
    上一篇:使用tensorflow 实现反向传播求导
    下一篇:tensorflow中的数据类型dtype用法说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解Python魔法方法之描述符类 详解,Python,魔法,方法,之,