Являются ли ** kwargs хорошим выбором для неконфигурационных данных в __init__? - PullRequest
2 голосов
/ 17 января 2011

Я думаю об использовании **kwargs необычным способом: в качестве поставщика данных, а не в качестве инструмента замещения перегрузки. Таким образом, все ключевые аргументы должны быть одного типа, например, специально сформированный кортеж, и никак иначе. Например:

class SomeClass(object):
    '''All **kwargs should be in ("string", 1, True) form'''
    def __init__(self, some_param, **kwargs):
        self.param = some_param
        for arg in kwargs.itervalues():
            if not isinstance(arg[0], str):
            ...

        self.some_dict = kwargs

Это нормально? Я чувствую ... странно, это кажется неканоничным.

1 Ответ

3 голосов
/ 17 января 2011

Посмотрите, что делает конструктор dict в Python:

>>> dict(one=1, two=2, three=3)
{'three': 3, 'two': 2, 'one': 1}

Также «креативное» использование аргументов ключевых слов.Если это работает для стандартного типа и имеет смысл в вашем приложении, сделайте это.

...