我有一个类 a 和 b 如下:
class a(object):
counter=10
def __init__(self):
self.counter=1
def process(self):
self.counter+=1
return self.counter
class b(a):
def __init__(self,a_obj):
self.counter=a_obj.counter
def process(self):
result=self.counter
return (result)
我所谓的主要功能是:
a_object=a()
b_object=b(a)
for x in range(1,6):
print(a_object.process())
print(b_object.process())
我的结果如下:
2
3
4
5
6
10
但是我想访问 A 中计数器的最后更新值,即 6(引用实例变量)而不是 10(这是类变量的值)。
请告诉我哪里出了问题。
最佳答案
保留对 a_obj.counter
的引用是没有意义的。您所做的就是创建对不可变对象(immutable对象)的新引用。您没有引用a_obj
上的属性,仅引用a_obj.counter
也指向的对象。 p>
但是,当运行 a.process()
时,counter
引用将被指向不同整数对象的引用替换。 b.counter
仍然引用初始值。
您想要保留对 a_obj
本身的引用,这样您就可以在需要时询问它的 counter
属性 there 指向什么:
class b(a):
def __init__(self, a_obj):
self.a_obj = a_obj
def process(self):
result = self.a_obj.counter
return result
您可能想了解 Python 名称和属性的工作原理;它们只是与实际物体相连的小名称标签。请参阅Ned Batchelder's excellent Facts and myths about Python names and values article .
关于python - 在python中访问实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184182/