开发者

Receiving Arguments via Pointers in Python

I have a class whose function defined like this. My intention is to send multiple argumen开发者_如何转开发ts to it .

For testing, I called it as :class_name("argument1","argument2"), and it says: __init__accepts atmost 1 arguments , 3 given

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

What is the proper way to handle this ?

Any suggestions welcome......


You want to use one asterisk instead of two. Double asterisks are for named arguments. There is a nice explanation in the python documentation if you are interested in reading further.

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

However, from your code I think the real issue is that you are calling your function incorrectly.

You would want to call it like:

class_name(argument1="some value")

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


Here is a simpler way to write it

def __init__(self, **options):
    vars(self).update(options)


The * form collects positional arguments:

def __init__(self, *options):

and the ** form collects keyword arguments:

def __init__(self, **options):

You're providing 2 positional arguments plus the instance as self, but it's defined to expect only 1 positional argument self.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜