Ich denke an **kwargs
in einer ungewöhnlichen Art und Weise: als Datenanbieter und nicht als Überladung substituierendes Werkzeug. Auf diese Weise sollten alle Schlüsselwortargumente von einem Typ sein, zum Beispiel spezifisch gebildetes Tupel, und sonst nichts. Im Beispiel:Sind Kwargs eine gute Wahl für Nichtkonfigurationsdaten in __init__?
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
Ist es in Ordnung, dies zu tun? Ich fühle ... seltsam, es scheint unkanonisch.
Kennen Sie auch '* args'? – ulidtko
@ulidtko Ja. Grundsätzlich geht es um beide Fragen, aber am Ende habe ich mich mit Kwargen geschlagen, weil sie komplexer sind. –
Ich denke, dass dieser Code nicht das ist, was Sie erwarten. Kwargs ist ein Diktat, und seine Schlüssel sind immer Strings. Wenn Sie darüber iterieren (für arg in kwargs), ist arg immer eine Zeichenkette, also ist arg [0] auch immer eine Zeichenkette. –