gpt4 book ai didi

python - "class"与 "instance of class"__get__ 和 __set__?

转载 作者:行者123 更新时间:2023-11-28 21:43:06 24 4
gpt4 key购买 nike

问:为什么 hh.a = 2 不是我期望的,但 b.a = 2 可以?

代码如下:

class D:
def __init__(self):
print('this is init')
self.name = ''

def __get__(self,instance,owner):
print('getting')
return self.name


def __set__(self,instance,value):
print('setting')
self.name = value
return self.name

和...

class hh:
a = D()

b = hh()

当我设置 hh.a = 2 时,它不会调用 print('setting') 但 b.a = 2 可以。你能解释一下吗?

最佳答案

只有在拥有描述符的类的实例上设置属性时,描述符 setter 才会被激活。它们不适用于类本身或其子类。这记录在 Python data model 中。 .

3.3.2.1. Implementing Descriptors

...

object.__set__(self, instance, value)

Called to set the attribute on an instance instance of the owner class to a new value, value.

关于python - "class"与 "instance of class"__get__ 和 __set__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com