Добавьте аргументы, используя kwargs в Python - PullRequest
2 голосов
/ 27 января 2012

Ниже моя функция

def list_abc(self, name, id, keywords):
        cmd = ABC() //ABC is a class
        cmd.id=id
        cmd.name=name
        cmd.keywords=keywords
        return ABC(cmd)

Я хочу передать name, id и 'keywords, используя ** kwargs в Python.

Есть идеи, как это сделать?

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 27 января 2012
kwargs = {'name': 'Frank', 'id': 999, 'keywords': ['cool', 'smart']}
result = self.list_abc(**kwargs)
3 голосов
/ 27 января 2012
def list_abc(self, **kwargs):
    # check if 'name' in kwargs, etc
    cmd = ABC()
    cmd.id = kwargs['id']
    cmd.name = kwargs['name']
    cmd.keywords = kwargs['keywords']
    return ABC(cmd) # not sure what ABC(ABC) does

...
some_instance.list_abc(name='name', id=1, keywords=['good', 'luck'])


# or, if have a dictionary containing name, id and keywords, you can pass it to the
# method as follows
data = {'name':'name', 'id':1, 'keywords':('a', 'b')}
some_instance.list_abc(**data)
...