【发布时间】:2016-09-13 10:32:21
【问题描述】:
我需要直接从继承的类中更改对象变量。 这是我的代码示例:
class A(object):
def __init__(self,initVal=0):
self.myVal = initVal
def worker(self):
self.incrementor = B()
self.incrementor.incMyVal(5)
class B(A):
def incMyVal(self,incVal):
super().myVal += incVal
obj = A(5)
print(obj.myVal)
obj.worker()
print(obj.myVal)
但它不起作用:
AttributeError: 'super' object has no attribute 'myVal'
我还尝试在 B 类中对我的变量使用全局/非本地关键字,但没有运气。
在我的主要案例中,B 类是一个事件处理程序。并且它应该在事件触发时更改对象的属性。所以我无法在incMyVal 方法中使用return。
【问题讨论】:
-
myVal不是类属性。它是 instances 上的一个属性,并且实例没有“父”类。 -
@Gnqz:我看不到这里的关系。
-
你试图做一些非常愚蠢的事情是你做错了。如果您将一个值传递给另一个对象,以便它可以更改您的值您可能只是更改了您自己的值。
-
@WayneWerner:这只是一个示例代码。 MartijnPieters 回答说,正是我想要的
标签: python python-3.x