我正在尝试了解python中的实例和类属性。然后我有点困惑:this_obj.var
是一个实例属性,或者它属于class属性。代码在
class Myclass (object):
var = 10
this_obj = Myclass()
this_obj.somevar = 12
that_obj = Myclass()
that_obj.somevar = 12
答案 0 :(得分:2)
实例和类属性最初可能会令人困惑。 思考它的最好方法是注意名称。
实例属性由类的特定实例拥有,这意味着这些属性可能因特定类的实例而异。
另一方面,Class属性由类本身拥有,因此该属性对于特定类的每个实例具有相同的值。
在您的示例中,var
将是MyClass
的每个实例的类属性。但是,一旦var
设置为任何给定实例的不同值,例如this_obj.var = 69
,则this_obj.var
现在是this_obj
实例的实例属性。意思是,在更改任何实例的class属性时创建实例属性。
希望有所帮助!
编辑:您还可以更改类属性值本身,这意味着它将针对该特定变量没有实例属性的所有实例进行更改。例如,MyClass.var = 34
将更改尚未创建实例属性的MyClass
的所有实例的值。