我有一个子类共享它的基类的init:
class SubClass(BaseClass)
def __init__(self, param, *args, **kwargs):
super().__init__(*args, **kwargs)
self.thing = param
我遇到的问题是子类init参数param被传递到
super().__init__(*args, **kwargs)
作为额外参数。这通常会给我一个错误,比如:
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given
我不想那样。我只希望“param”用于这些子类实例。如何停止向基类in it发送额外的参数,同时仍然能够在子类init中使用它?再现问题的示例代码:
from unittest import TestCase
class TestCaseSubClass(TestCase):
def __init__(self, param, *args, **kwargs):
super().__init__(*args, **kwargs) # Just use whatever is in TestCase's init + our stuff
self.thing = param
print(self.thing)
class TestClass(TestCaseSubClass(param='bdfbdfb')):
def test_stuff(self):
print('test stuff here')
或者只使用原始的python,没有导入,为什么我不能这样做?(相同的错误)
class A(object):
def __init__(self, athing='thing'):
self.thing = athing
print(self.thing)
class AB(A):
def __init__(self, param, *args, **kwargs):
super().__init__(*args, **kwargs)
self.param= param
print(self.param)
class ABC(AB(param='thh')):
pass
ABCinstance = ABC()