如果我写一个继承关系如下:
class Pet(object):
def __init__(self, n):
print n
class Dog(Pet):
def __init__(self, **kwargs):
Pet.__init__(self, 5)
那么输出是5
。但是,如果我想:
^{pr2}$
然后我得到错误TypeError: __init__() takes exactly one argument (two given)
我怎样才能以这种方式将额外的参数传递给继承链呢?在
Tags:
想出来了:使用
Pet.__init__(self, **kwargs)
它被称为“unpacking”,它将字典
kwargs
转换为参数=值对的列表。在然后父构造函数中的}。在
**kwargs
能够处理它们。仅仅传递一个字典是行不通的,因为构造函数中的**kwargs
需要一堆参数=值对,但是我只传递给它一个值,即子字典{只需将参数作为关键字参数传递:
但是,您应该使用
super
,而不是硬编码超类。在将
^{pr2}$Dog
的定义更改为(Python 2.X):在Python 3.X中,它更好,只是:
相关问题 更多 >
编程相关推荐