Es scheint, dass oft __init__
Methoden dies ähnlich sind:Python __init__ setattr auf Argumenten?
def __init__(self, ivar1, ivar2, ivar3):
self.ivar1 = ivar1
self.ivar2 = ivar2
self.ivar3 = ivar3
Gibt es irgendwie, die Argumente in eine Liste zu machen (ohne zu *args
oder **kwargs
greifen) und dann setattr
die Instanzvariablen zu setzen verwenden, mit der Name des Parameters und das übergebene Argument? Und vielleicht die Liste zerteilen, z. Sie müssten es zumindest zu [1:]
in Scheiben schneiden, weil Sie self.self
nicht wollen.
(eigentlich denke ich, es wäre ein Wörterbuch sein müssen, den Namen und den Wert zu halten)
wie folgt aus:
def __init__(self, ivar1, ivar2, ivar3, optional=False):
for k, v in makedict(self.__class__.__init__.__args__): # made up __args__
setattr(self, k, v)
Dank!
Unbekannte Antwort reagiert, fand ich dies funktioniert:
Class A(object):
def __init__(self, length, width, x):
self.__dict__.update(dict([(k, v) for k, v in locals().iteritems() if k != 'self']))
oder
Class A(object):
def __init__(self, length, width, x):
self.__dict__.update(locals())
del self.__dict__['self']
Nicht ..
zu schlecht
Betrogene http://stackoverflow.com/questions/1389180/python-automatisch-initialize-instance-variables – SilentGhost
siehe auch: http://stackoverflow.com/questions/739625/setattr-with-kwargs-pythonic-or-not – Imran