这两个代码会给出两个不同的输出,为什么?
class Test:
def __get__(self, instance, owner):
return 42
def __set__(self, instance, value):
pass
class A:
a = Test()
a = A()
print(a.a) // print 42
a.a = 0
print(a.a) // print 42
和
class Test:
def __get__(self, instance, owner):
return 42
def __set__(self, instance, value):
pass
class A:
pass
a = A()
a.a = Test()
print(a.a) // print <__main__.Test object at 0xb700d6cc>
a.a = 0
print(a.a) // print 0
如何在Python引擎中存储属性?
最佳答案 您的Test类不称为“属性”,它是一个
descriptor.根据定义,描述符仅在存储在(新样式,对于可怜的Python 2用户)类时才起作用.非类对象上的描述符对象没有特殊含义,它们被视为任何其他对象.检索它们时忽略它们的__get__方法,并且当它们被替换时忽略它们的__set__.