似乎通常__init__
方法与此类似:
def __init__(self, ivar1, ivar2, ivar3):
self.ivar1 = ivar1
self.ivar2 = ivar2
self.ivar3 = ivar3
有没有办法将参数变成一个列表(不诉诸*args
or **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']
还不错。。