我有一个类,其功能定义如下。我的目的是向它发送多个参数。
为了进行测试,我将其称为:class_name("argument1","argument2")
,并说:__init__accepts atmost 1 arguments , 3 given
def __init__(self, **options):
for name in options:
self.__dict__[name] = options[name]
处理此问题的正确方法是什么?
欢迎任何建议......
答案 0 :(得分:5)
您想要使用一个星号而不是两个。双星号用于命名参数。如果你有兴趣进一步阅读,python documentation中有一个很好的解释。
def __init__(self, *options):
for name in options:
self.__dict__[name] = name
但是,从您的代码中我认为真正的问题是您错误地调用了您的函数。
你想把它称为:
class_name(argument1="some value")
def __init__(self, **options):
for name,val in options.iteritems():
self.__dict__[name] = val
答案 1 :(得分:4)
这是一种更简单的写作方式
def __init__(self, **options):
vars(self).update(options)
答案 2 :(得分:3)
*
表单收集位置参数:
def __init__(self, *options):
并且**
表单收集关键字参数:
def __init__(self, **options):
你提供2个位置参数加上实例为self
,但它被定义为只期望1个位置参数self
。