按名称使用参数调用函数 - 未正确推送参数

时间:2015-04-18 12:16:09

标签: python python-3.x

我的代码:

class OfferHandler:
    def get(provider, **kwargs):
        getattr(OfferHandler, 'get_' + provider)(**kwargs)

    def get_ADM(settings, ip, uniquekey):
        return settings

 x = OfferHandler
 settings = x.get('ADM', '{json settings}', '127.0.0.1', '123')
 pprint(settings) # prints Null instead of {json settings}

为什么没有正确推送参数?

1 个答案:

答案 0 :(得分:2)

您没有使用关键字参数,只使用位置参数。

如果您使用关键字参数,它们实际上可以由**kwargs捕获并传递:

settings = x.get('ADM', settings='{json settings}', ip='127.0.0.1', uniquekey='123')

请注意,您实际上并未使用OfferHandler作为课程;您似乎将其用作命名空间。使用Python模块来创建名称空间; class实际上只应该用于实际的类,所以你想创建的对象是。