【问题标题】: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 实例的值。

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 2021-12-26
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2011-12-01
    • 2011-11-24
    相关资源
    最近更新 更多