赋值后打印一下看看实例a的test是多少,我猜还是15
a.test = 45
print(a.test)
第一次看到描述符这个东西。
根据我现场找到的文章,45被赋值给C这个类,而不是a这个实例了。
解决方案是
class Desc:
def __init__(self, value):
self.value = value
def __get__(self, ins, cls):
return self.value
def __set__(self, ins, value):
self.value = value
def __delete__(self, ins):
raise AttributeError('not allowed to delete attribute name ' )
class A:
name=Desc('JS')
a=A()