为什么描述符__get__可以访问对象的类型,但__set__没有?

时间:2017-11-04 19:51:30

标签: python python-2.7 descriptor

来自https://docs.python.org/2/howto/descriptor.html

descr.__get__(self, obj, type=None) --> value

descr.__set__(self, obj, value) --> None

descr.__delete__(self, obj) --> None

为什么__get__方法可以访问type,但其他两个方法不能访问?

1 个答案:

答案 0 :(得分:3)

__get__中,type参数是一个类名,在通过类访问属性时很有用,因为在这种情况下obj(实例)将是{{1 }}。在None中,您不需要__set__参数,因为无法通过类设置描述符的值,您只需用新值覆盖描述符。

考虑以下代码

type