多くの場合、__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']))
また
Class A(object):
def __init__(self, length, width, x):
self.__dict__.update(locals())
del self.__dict__['self']
悪くない..