如何在Python中向派生类的构造函数添加关键字参数?

oro*_*ome 6 python constructor keyword-argument python-2.7

我想为派生类添加关键字参数,但无法弄清楚如何去做.尝试显而易见的

class ClassA(some.package.Class):

    def __init__(self, *args, **kwargs):
        super(ClassA, self).__init__(*args, **kwargs)

class ClassB(ClassA):

    def __init__(self, *args, a='A', b='B', c='C', **kwargs):
        super(ClassB, self).__init__(*args, **kwargs)
        self.a=a
        self.b=b
        self.c=c
Run Code Online (Sandbox Code Playgroud)

失败了,因为我不能列出这样的参数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
Run Code Online (Sandbox Code Playgroud)

当然不起作用,因为没有指定新的关键字.

如何__init__为派生类添加关键字参数?

akn*_*ds1 8

尝试这样做:

class ClassA(object):
    def __init__(self, *args, **kwargs):
        pass

class ClassB(ClassA):
    def __init__(self, *args, **kwargs):            
        self.a = kwargs.pop('a', 'A')
        self.b = kwargs.pop('b', 'B')
        self.c = kwargs.pop('c', 'C')
        super(ClassB, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

有效地将关键字参数a,b和c添加到ClassB,同时将其他关键字参数传递给ClassA.