如何在Python中将关键字参数添加到派生类的构造函数中? [英] How do I add keyword arguments to a derived class's constructor in Python?

查看:107
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆