class Descriptor:
def __init__(self, initial_value=None):
self._name = None
self._initial_value = initial_value
def __set_name__(self, owner_class, name):
self._name = name
def __get__(self, instance, owner_class):
if instance is None:
return self
return instance.__dict__.get(self._name, self._initial_value)
def __set__(self, instance, value):
instance.__dict__[self._name] = value
def __delete__(self, instance):
del instance.__dict__[self._name]
该通用描述符类包含了四个方法:
__init__: 初始化对象,可以接受一个可选的初始值作为参数;
__set_name__: 当使用此描述符的实例被附加到拥有者类时调用。通过这种方式,将描述符与其使用的属性名称相关联;
__get__: 用于获取属性时自动调用的方法,返回属性值;
__set__: 用于设置属性时自动调用的方法,设置属性值;
__delete__: 用于删除属性时自动调用的方法,删除属性。
通用描述符类中的 __get__ 方法和 __set__ 方法被设计为通用方法,其中如果属性不存在,则返回初始值(如果提供),否则返回默认值 None。因此,可以使用此通用描述符类来创建任何属性。
-------------------------------------------
个性签名:代码过万,键盘敲烂!!!