I have a class whose function defined like this. My intention is to send multiple arguments to it .
For testing it ,i called it as :class_name("argument1","argument2") , 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