【发布时间】:2020-01-17 12:47:38
【问题描述】:
我的情况与this question 几乎相同,只是我需要关键字参数。
我想向派生类添加 必需 关键字参数,但不知道如何去做。尝试显而易见的
class ClassA(some.package.Class):
def __init__(self, *args, **kwargs):
super(ClassA, self).__init__(*args, **kwargs)
class ClassB(ClassA):
def __init__(self, *args, a, b, c, **kwargs):
super(ClassB, self).__init__(*args, **kwargs)
self.a=a
self.b=b
self.c=c
失败,因为我无法为ClassB 的__init__ 列出类似的参数。和
class ClassB(ClassA):
def __init__(self, *args, **kwargs):
super(ClassA, self).__init__(*args, **kwargs)
self.a=a
self.b=b
self.c=c
当然不起作用,因为没有指定新的关键字。
如何将必需关键字参数添加到派生类的__init__?
类似问题:How do I add keyword arguments to a derived class's constructor in Python?
【问题讨论】:
-
按照该示例,我将尝试提取所需的参数并为缺少的任何参数提高
TypeError。 -
嗯...您编辑了“显而易见”的示例,说
def __init__(self, *args, a, b, c, **kwargs):不起作用,但只要您使用的是 Python 版本,它就可以正常工作完全支持仅关键字参数。如果您仍在使用 Python 2,则根本无法使用仅关键字参数,但在 Python 3 上,“显而易见的”可以正常工作,如我的回答所示。
标签: python arguments keyword-argument pep-3102