我有以下BaseClass
class A(object):
__metaclass__ = abc.ABCMeta
def __init__(self, val1, val2):
self.v1 = val1
self.v2 = val2
然后是一些扩展类:
class B(A):
def __init__(self, *args, **kwargs):
super(self.__class, self).__init(*args[:len(args)-1], **kwargs
self.v3 = args[len(args)]
基本上我想用以下方式调用它:
x = B(1,2,34)
但这似乎我需要有一个特定的顺序,如何以正确的方式实现 init ,以便基类可以初始化其v1,v2变量和扩展类B可以初始化v3值(在这种情况下为34)。
答案 0 :(得分:1)
您应该明确超类A.__init__
所需的参数。如果你提供< 2 args到B
然后你会得到一个错误。
class B(A):
def __init__(self, val1, val2, *args):
super(self.__class, self).__init__(val1, val2)
self.v3 = args # or args.pop() or whatever