我有一个班级:
class A(object):
def __init__(self, *args):
# impl
也是一个“mixin”,基本上是另一个带有一些数据和方法的类:
class Mixin(object):
def __init__(self):
self.data = []
def a_method(self):
# do something
现在我用mixin创建一个A的子类:
class AWithMixin(A, Mixin):
pass
我的问题是我想要调用A和Mixin的构造函数。我考虑给AWithMixin一个自己的构造函数,其中调用了super,但是超类的构造函数有不同的参数列表。什么是最佳分辨率?
答案 0 :(得分:10)
class A_1(object):
def __init__(self, *args, **kwargs):
print 'A_1 constructor'
super(A_1, self).__init__(*args, **kwargs)
class A_2(object):
def __init__(self, *args, **kwargs):
print 'A_2 constructor'
super(A_2, self).__init__(*args, **kwargs)
class B(A_1, A_2):
def __init__(self, *args, **kwargs):
super(B, self).__init__(*args, **kwargs)
print 'B constructor'
def main():
b = B()
return 0
if __name__ == '__main__':
main()
答案 1 :(得分:9)
我对OOP也很新,但这段代码有什么问题:
class AWithMixin(A, Mixin):
def __init__(self, *args):
A.__init__(self, *args)
Mixin.__init__(self)