Дан класс:
class Container:
def __init__(self, a, b, c, d, e, f, g):
self.a = a
self.b = b
self.c = c
self.d = d
self.e = e
self.f = f
self.g = g
Как реализовать перегрузку конструктора?
Чтобы вызов класса был таким:
obj1 = Container(a=1, b=2, c=3, d=4)
obj2 = Container(x=4, y=3)
Мой вариант такой, но он не рабочий:
class Container:
def __init__(self, **kwargs):
for key in kwargs:
self.key = kwargs[key]
P.S. Желательно, реализация с именованными аргументами, но и с позиционными тоже приветствуется)
UPD:
Есть функция:
def get_data(request):
a = request.POST['a']
b = request.POST['b']
c = request.POST['c']
d = request.POST['d']
e = request.POST['e']
f = request.POST['f']
cont = Container(a, b, c, d, e, f)
return cont
Она используется для получения данных из POST запроса. Подумал, лучше передавать данные в экземпляре класса, чем делать
return a, b, c, d, e, f. Потом, полученные данные обрабатываются дальше, к примеру, передаются в функцию:
Думаю, так лучше:
send_data(instanceOfContainer)
А так хуже:
send_data(a, b, c, d, e, f)
Количество полей, которые передаются POST запросом со временем будет увеличиваться и делать тысячу раз
request.POST[key] не вариант. Как и расширять конструктор для класса Container с помощью
self.x = x. Нужен способ делать это коротко и красиво. Поэтому я и спрашиваю про именованные и позиционные параметры переменной длины.