【问题标题】:Difference between instance attributes and class attributes实例属性和类属性的区别
【发布时间】:2018-04-14 17:13:13
【问题描述】:
我正在尝试了解 python 中的实例和类属性。然后我有点困惑:this_obj.var 是实例属性还是属于类属性。代码如下
class Myclass (object):
var = 10
this_obj = Myclass()
this_obj.somevar = 12
that_obj = Myclass()
that_obj.somevar = 12
【问题讨论】:
标签:
python
python-3.5
instance-variables
class-variables
【解决方案1】:
实例和类属性起初可能有点让人难以理解。
考虑它的最好方法是注意名称。
实例属性由类的特定实例拥有,这意味着这些属性可能因特定类的实例而异。
另一方面,类属性归类本身所有,因此对于特定类的每个实例,该属性具有相同的值。
在您的示例中,var 将是 MyClass 的每个实例的类属性。但是,一旦var 为任何给定实例设置为不同的值,例如this_obj.var = 69,那么this_obj.var 现在是this_obj 实例的实例属性。意思是,实例属性是在更改任何实例的类属性时创建的。
希望对您有所帮助!
编辑:您还可以更改类属性值本身,这意味着对于没有该特定变量的实例属性的所有实例,它都会更改。例如,MyClass.var = 34 将更改尚未创建实例属性的所有 MyClass 实例的值。