通过Python中的指针接收参数

时间:2011-07-11 02:49:57

标签: python arguments

我有一个类,其功能定义如下。我的目的是向它发送多个参数。

为了进行测试,我将其称为:class_name("argument1","argument2"),并说:__init__accepts atmost 1 arguments , 3 given

def __init__(self, **options):
    for name in options:
        self.__dict__[name] = options[name]

处理此问题的正确方法是什么?

欢迎任何建议......

3 个答案:

答案 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