Я хочу сделать что-то наподобие такого:
class A(object):
def __init__(self, **kwargs):
self.a = 0
self.b = ""
for key in kwargs:
setattr(self, key, kwargs[key])
a1 = A(a=1, b="a")
d = {'a': 2, 'b': "b"}
a2 = A(**d)
Но класс A у меня абстрактный, по-сути нигде не будет его экземпляров. Зато есть производный класс B, в котором добавляются свои поля. Если написать так:
class B(A):
def __init__(self, **kwargs):
A.__init__(self, kwargs)
self.c = []
# тут ещё куча полей
for key in kwargs:
setattr(self, key, kwargs[key])
У меня есть 2 варианта, как это обойти: либо убрать цикл из базового класса, либо во всех производных классах писать
class B(A):
def __init__(self, **kwargs):
A.__init__(self, kwargs)
self.c = kwargs.get('c', [])
# тут ещё куча полей
Так вот, как это всё лучше организовать?