编辑:请注意,我在此处使用了错误的“财产”一词。相反,我使用了 variable 类(其他编程语言中的“字段”)。
如果我通过该类的实例设置了一个类的类(或静态)属性,则该实例的属性引用新设置的对象,但是该类或其他实例引用在类级别设置的对象:
class ClassPropertyDemo:
some_value = 42
cpd_1 = ClassPropertyDemo()
cpd_2 = ClassPropertyDemo()
# Set some_value via the second instance
cpd_2.some_value = 21
print(ClassPropertyDemo.some_value) # 42 - The value of the class property
print(cpd_1.some_value) # 42 - The value of the class property
print(cpd_2.some_value) # 21 - The value set to the property of the class instance
我的问题是这里实际上发生了什么。 cpd_2.some_value
是动态创建的新的 instance 属性,该属性隐藏了class属性吗?
答案 0 :(得分:0)
您可以通过添加以下代码来扩展代码,使其更加清晰:
del cpd_2.some_value
print(cpd_2.some_value) # 42 - 'Unhide' the original value