У меня есть подкласс, разделяющий __ 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" использовался для этих экземпляров подкласса. Как прекратить отправку дополнительного параметра в базовый класс __ init __, сохраняя возможность использовать его в подклассе __ 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')
Или с просто сырым питоном, без импорта, почему я не могу это сделать? (та же ошибка)
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()