通过实例解析python描述符原理作用

这篇文章主要介绍了通过实例解析python描述符原理作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

本质上看,描述符是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。

描述符类基于以下三种特殊方法,换句话说,这三种方法组成了描述符协议:

  • __set__(self, obj, type = None): 在设置属性时,将调用这一方法。
  • __get__(self, obj, value): 在读取属性时将调用这一方法。
  • __delete__(self, obj): 对属性调用del时将调用这一方法。

其中,实现了setter和getter方法的描述符被称为数据描述符,反之,如果只实现了getter方法,则称为非数据描述符。

#描述符类

class revealAccess:

def __init__(self, initval = None, name = 'var'):

self.val = initval

self.name = name

def __get__(self, obj, objtype):

print("Retrieving", self.name)

return self.val

def __set__(self, obj, val):

print("updating", self.name)

self.val = val

class myClass:

x = revelAccess(10, 'var "x"')

y = 5

m = myClass()

print(m.x)

m.x = 20

print(m.x)

print(m.y)

Retrieving var "x"

10

updating var "x"

Retrieving var "x"

20

5

如果一个类的某个属性有数据描述符,那么每次查找这个属性时,都会调用描述符的__get__()方法,并返回它的值;同样,每次在对属性赋值时,也会调用__set__()方法。

当每次使用del类对象.属性(或者delattr(类对象,属性))语句时,都会调用该方法。

以上是 通过实例解析python描述符原理作用 的全部内容, 来源链接: utcz.com/z/328181.html

回到顶部