Кажется, что часто __init__ методы похожи на это:
def __init__(self, ivar1, ivar2, ivar3):
self.ivar1 = ivar1
self.ivar2 = ivar2
self.ivar3 = ivar3
Есть ли способ превратить аргументы в список (не прибегая к *args или **kwargs), а затем использовать setattr для установки переменных экземпляра с именем параметра и переданным аргументом? И, возможно, нарезать список, например. вам нужно по крайней мере нарезать его до [1:], потому что вы не хотите self.self.
(на самом деле я думаю, что это должен быть словарь для хранения имени и значения)
нравится:
def __init__(self, ivar1, ivar2, ivar3, optional=False):
for k, v in makedict(self.__class__.__init__.__args__): # made up __args__
setattr(self, k, v)
Спасибо!
Отвечая на ответ Неизвестного, я обнаружил, что это работает:
Class A(object):
def __init__(self, length, width, x):
self.__dict__.update(dict([(k, v) for k, v in locals().iteritems() if k != 'self']))
or
Class A(object):
def __init__(self, length, width, x):
self.__dict__.update(locals())
del self.__dict__['self']
Не так уж плохо..