我有一个Python类,我想用kwargs实例化:例如。
a = ClassA(happy=True)
我想用ClassB覆盖这个类并将happy设置为True,我认为这个定义可行:
class ClassB(ClassA(happy=True))
但是我得到了:
TypeError: 'ClassA' object is not callable
我目前的解决方法是将ClassB定义为:
class ClassB(ClassA)
但是每次我实例化ClassB时,我都必须这样做:
b = ClassB(happy=True)
任何人都知道怎么做?
答案 0 :(得分:1)
这是怎么做的:
class ClassB(ClassA):
def __init__(self, happy=True):
super().__init__(happy=happy)
在定义类的基类时,就是这么做 - 定义基类(这里:(ClassA)
)。
当您想要创建类的实例(例如ClassB()
)时,会发生什么?它的构造函数(__init__
)被调用。
基类显然有一个构造函数,它以False
作为默认值,因此您重写构造函数并更改其默认参数值。
然后,使用任何值(super().__init__(happy=happy)
)调用基础构造函数。