美文网首页
python 创建可类型检查的类属性

python 创建可类型检查的类属性

作者: 孙广宁 | 来源:发表于2022-05-30 22:19 被阅读0次
    8.9 可以以描述符类的形式定义其功能。
    >>> class I:
    ...      def __init__(self,name):
    ...          self.name = name
    ...      def __get__(self,instance,cls):
    ...          if instance is None:
    ...              return self
    ...          else:
    ...             return instance.__dict__[self.name]
    ...      def __set__(self,instance,value):
    ...          if not isinstance(value,int):
    ...              raise TypeError("Expected an int")
    ...          instance.__dict__[self.name]=value
    ...      def __delete__(self,instance):
    ...          del instance.__dict__[self.name]
    ... 
    >>> 
    
    • 所谓的描述符就是以特殊方法 get set delete 的形式实现了三个核心的属性访问操作的类。
    • 这些方法通过接受类实例作为输入来工作。之后,底层的实例字典会根据需要适当的进行调整
    • 要使用一个描述符,我们把描述符的实例放置在类的定义中作为类变量来用。
    >>> class P:
    ...     x = I('x')
    ...     y = I('y')
    ...     def __init__(self,x,y):
    ...         self.x=x
    ...         self.y=y
    ... 
    
    • 当这么做时,所有针对描述符属性(即使 x或y)的访问都会给 get set和delete方法所捕获,如下:
    >>> p =P(2,3)
    >>> p.x
    2
    >>> p.y
    3
    >>> p.x=2.3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 11, in __set__
    TypeError: Expected an int
    >>> p.x=3
    >>> p.x
    3
    >>> 
    
    
    • 每个描述符方法都会接受被操纵的实例作为输入。

    相关文章

      网友评论

          本文标题:python 创建可类型检查的类属性

          本文链接:https://www.haomeiwen.com/subject/curaprtx.html