繁体   English   中英

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

[英]Difference between instance attributes and class attributes

我正在尝试了解python中的实例和类属性。 然后有点困惑: this_obj.var是实例属性还是它属于类属性。 代码如下

class Myclass (object):
    var = 10

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

首先,实例和类的属性可能会使您感到困惑。 考虑它的最好方法是注意名称。

实例属性归该类的特定实例所有,这意味着这些属性在特定类的实例之间可能会有所不同。

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

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

希望有帮助!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM