How can I set override default kwargs in a parent class?
假设我有以下父类和子类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class A(object): def __init__(self, *args, **kwargs): self.a = kwargs.get('a', 'default_A') self.b = kwargs.get('b', 'default_B') class B(A): a ="override_A" def __init__(self, *args, **kwargs): super(B, self).__init__(**kwargs) b = B() print b.b # this is"default_B", as expected print b.a # I expected this to be"override_A" |
我在这里做错什么了?我试图通过这样的答案理解继承是如何工作的,但没有找到描述这个特定需求的东西。
您混合了类和实例变量。
例如,您可以使用
1 2 3 4 5 6 7 | class B(A): def __init__(self, *args, **kwargs): # If the key 'a' exists, this'll be effectively no-operation. # If not, then 'a' is set to 'override_A'. kwargs.setdefault('a', 'override_A') super(B, self).__init__(**kwargs) |