我遇到了有关Python多重继承的一些问题。
class TestFather(object):
fathers = {}
path = "/C"
def __init__(self):
super(TestFather, self).__init__()
# self.fathers = file_to_dict(self.path)
class TestMother(object):
mothers = {}
path = "/D"
def __init__(self):
super(TestMother, self).__init__()
# self.mothers = file_to_dict(self.path)
class TestChild(TestFather, TestMother):
def __init__(self):
super(TestChild, self).__init__()
t = TestChild()
help(t)
可变路径将存储母亲和父亲的文件目录。当我打印出父亲和母亲词典时,我注意到母亲词典以某种方式从父亲那里获取了所有信息。在阅读了Mro http://python-history.blogspot.com/2010/06/method-resolution-order-order.html并观看Raymond Hettinger的2015 Pycon Video Super是Super是Super是Super Is Super之后来自Testfather的变量,完全忽略了TestMother的路径变量。
我的问题是,测试奇币有没有办法使用其两个父母的路径,而不仅仅是服用具有较高Mro的一个。我知道更改可变名称会有用,但是雷蒙德说,必须有更好的方法。
testChild不能隐式继承两者,因为显而易见的名称碰撞:testchild.path不能同时具有两个值。由于您尚未描述您要访问两个值的测试儿童所需的语义,因此我不确定您真正需要的解决方案。
但是,您 can 在 __ INT __ INT __ 函数上展开,将名称存储在testchild中,但您喜欢的列表 - 也许是两个字符串的列表?