如何在Python中将关键字参数添加到派生类的构造函数中? [英] How do I add keyword arguments to a derived class's constructor in Python?
本文介绍了如何在Python中将关键字参数添加到派生类的构造函数中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在派生类中添加关键字参数,但无法弄清楚该怎么做.尝试显而易见的
I want to add keyword arguments to a derived class, but can't figure out how to go about it. Trying the obvious
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
失败,因为我无法列出类似ClassB
的__init__
的参数.还有
fails because I can't list parameters like that for ClassB
's __init__
. And
class ClassB(ClassA):
def __init__(self, *args, **kwargs):
super(ClassA, self).__init__(*args, **kwargs)
self.a=a
self.b=b
self.c=c
当然不起作用,因为未指定新关键字.
of course doesn't work because the new keywords aren't specified.
如何为派生类的__init__
添加关键字参数?
How do I add keyword arguments to the __init__
for a derived class?
推荐答案
尝试这样做:
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)
有效地将关键字参数a,b和c添加到ClassB,同时将其他关键字参数传递给ClassA.
Effectively you add the keyword arguments a, b and c to ClassB, while passing on other keyword arguments to ClassA.
这篇关于如何在Python中将关键字参数添加到派生类的构造函数中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文