我有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)
我所谓的主要功能是:
^{pr2}$我的研究结果如下:
2
3
4
5
6
10
但是我想在6(引用实例变量)而不是10(类变量的值)中访问counter的最后更新值。在
请告诉我这件事哪里出了问题。在
保留对
a_obj.counter
的引用没有意义。您所做的就是创建一个对不可变对象的新引用。您不是在引用a_obj
上的属性,只有a_obj.counter
也指向的对象。在但是当
a.process()
运行时,counter
引用被指向不同整数对象的引用所取代。b.counter
仍然引用初始值。在您希望保留对
a_obj
本身的引用,因此您可以在需要时询问它counter
属性指向什么:您可能需要阅读Python名称和属性的工作原理;它们只是与实际对象绑定的小名称标记。见Ned Batchelder's excellent Facts and myths about Python names and values article。在
相关问题 更多 >
编程相关推荐