我写了简单的课程
class Test:
stat = 0
def __init__(self):
self.inst = 10
def printa(self):
print Test.stat
print self.inst
现在我已经创建了这个类的两个对象
^{pr2}$当我说a.printa()
或b.printa()
时,它输出{
但当我说
$ a.stat = 2
$ print a.stat
它会输出的
2
但当我说a.printa()
它会输出的
1
10
说objInstance.staticVar
和{
通过
我想你是说
^{pr2}$因为类变量
stat
从未更改过。在为了回答您的问题,它这样做是因为您向
a
对象添加了一个实例成员变量stat
。您的objInstance.staticVar
根本不是静态变量,而是您添加的新变量。在除非您做了一些事情来更改属性赋值的工作方式(使用
__setattr__
或描述符),否则赋值给some_object.some_attribute
总是分配给一个实例属性,即使已经有一个具有该名称的类属性。在因此,当你
^{pr2}$a.stat
是class属性。但在你这么做之后a.stat
现在引用实例属性。类属性不变。在相关问题 更多 >
编程相关推荐