根据您的评论,您可以执行以下操作:
class B(A):
def __init__(self, c, an_a):
super(B, self).__init__(an_a.a, an_a.b)
self.c = c
相反,您可能更愿意保留当前的构造函数并添加一个from_a
静态方法:
class B(A):
def __init__(self, c, a, b): # note order
super(B, self).__init__(a=a, b=b)
self.c = c
@staticmethod
def from_a(c, an_a):
return B(c, an_a.a, an_a.b)
最后,如果您不想键入所有这些参数,您可以添加一个args()
方法A
然后使用集合解包函数语法:
class A:
...
def args(self):
return (self.a, self.b)
class B(A):
def __init__(self, c, *args): # Note *args
super(B, self).__init__(*args)
self.c = c
@staticmethod
def from_a(c, an_a):
return B(c, *an_a.args())
Now B
的构造函数采用特殊参数B
,后跟任意数量的参数,这些参数刚刚传递给A
的构造函数。这允许您在调用构造函数时进行元组解包,而不是手动列出所有内容。