实例属性和类属性之间的区别

时间:2017-11-02 08:41:29

标签: python python-3.5 instance-variables class-variables

我正在尝试了解python中的实例和类属性。然后我有点困惑:this_obj.var是一个实例属性,或者它属于class属性。代码在

之下
class Myclass (object):
    var = 10

this_obj = Myclass() 
this_obj.somevar = 12
that_obj = Myclass()
that_obj.somevar = 12

1 个答案:

答案 0 :(得分:2)

实例和类属性最初可能会令人困惑。 思考它的最好方法是注意名称。

实例属性由类的特定实例拥有,这意味着这些属性可能因特定类的实例而异。

另一方面,Class属性由类本身拥有,因此该属性对于特定类的每个实例具有相同的值。

在您的示例中,var将是MyClass的每个实例的类属性。但是,一旦var设置为任何给定实例的不同值,例如this_obj.var = 69,则this_obj.var现在是this_obj实例的实例属性。意思是,在更改任何实例的class属性时创建实例属性。

希望有所帮助!

编辑:您还可以更改类属性值本身,这意味着它将针对该特定变量没有实例属性的所有实例进行更改。例如,MyClass.var = 34将更改尚未创建实例属性的MyClass的所有实例的值。