|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #coding=UTF-8
- #知识点
- """
- 1.描述符就是一个类,一个至少实现 __get__()、__set__() 或 __delete__() 三个特殊方法中的任意一个的类
- 2. 在描述符类中:
- __get__(self, instance, owner): 用于访问属性,它返回属性的值
- __set__(self, instance, value): 将在属性分配操作中调用,不返回任何内容
- __delete__(self, instance): 控制删除操作,不返回任何内容
- 其中, self参数为描述符类, instance参数为描述符所在类的实例对象, owner为描述符所在类
- """
- class MyDes:
- def __init__(self, value = None):
- self.val = value
- def __get__(self, instance, owner):
- return self.val ** 2
- class Test:
- def __init__(self):
- self.x = MyDes(3)
- test = Test()
- print(test.x)
- #<__main__.MyDes object at 0x1058e6f60>
- #访问实例层次上的描述符 x,只会返回描述符本身。为了让描述符能够正常工作,它们必须定义在类的层次上。
- # 如果你不这么做,那么 Python 无法自动为你调用 __get__ 和 __set__ 方法。
- #使用描述符的实例: 摄氏度转华氏度:
- 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)
- print(temp.fah)
复制代码 |
|