我如何更新x.test以使值从继承返回?
所以我想要x.test返回['测试来自B'','测试来自C']
class A()
def __init__(self)
self.test = []
return
def coolThings(self):
# do cool things here and print the new self.test
print self.test
class B(A)
def __init__(self)
A.__init__(self)
return
def doSomething(self)
self.test.append('test from B')
class C(A)
def __init__(self)
A.__init__(self)
return
def doAnotherthing(self)
self.test.append('test from C')
--
In [575] x = A()
In [576] y = B()
In [577] z = c()
In [582] y.doSomething()
In [583] z.doAnotherthing()
In [584] x.test
Out[584] []
In [585] y.test
Out[585] ['test B']
In [586] z.test
Out[586] ['test C']
x.coolThings()
??
再次如何更新x.test进行['测试来自B'','测试来自C']
但是我又如何在所有继承中保持self.test?所以,如果我在y.doSomething()之后调用z.test,我希望['测试来自B']
此致
答案 0 :(得分:1)
继承创建类之间的关系,而不是对象。在您的示例中,类(A
,B
和C
)是相关的,但对象(x
,y
和z
)是相关的不
告诉我们您要做的事情,我们应该能够帮助您找到一个好方法。
答案 1 :(得分:0)
继承以另一种方式工作,你不能拥有继承类的基类复合语句。
我不确定你要完成什么,但是让单独的继承对象影响基类,你可能会使用类变量,但请记住,在这种情况下,所有实例现在都具有相同的测试值。
class A():
test = []
def coolThings(self):
print test
class B(A):
def doSomething(self):
A.test.append('test from B')
我再说一遍,此事的A和B的所有实例都具有相同的测试值。
答案 2 :(得分:0)
继承不起作用。试试这个:
x = C()
x.doSomething()
x.doAnotherThing()
x.test
答案 3 :(得分:0)
这里有两个问题:继承和静态数据
您有静态数据问题。如果您希望A的所有实例及其子项的所有实例共享TEST属性,请在类上将其设置为静态,如下所示:
class A(object):
test = []
def coolThings(self):
# do cool things here and print the new self.test
print self.test
继承是一种不同的动物。继承只是让你给A的方法的A副本的所有孩子。这不是关于共享数据,而是关于共享/扩展功能。