私はPythonの経験はあまりありませんが、勉強してい**kwargs
ます。
たくさん読んだ**kwargs
後、何かを理解しましたが、小さな問題があるか、正しいことを理解していません。
したがって、これは機能します:
def test_var_kwargs(farg, **kwargs):
print "formal arg:", farg
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
test_var_kwargs(farg=1, myarg2="two", myarg3=3)
そしてプリント:
仮引数: 1
別のキーワード arg: myarg2: two
別のキーワード arg: myarg3: 3
ただし、その関数がインスタンス関数である場合は、self
含める必要があります。
def test_var_kwargs(self, farg, **kwargs):
print "formal arg:", farg
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
self.test_var_kwargs(farg=1, myarg2="two", myarg3=3)
しかし、これはエラーを生成します:
TypeError: test_var_kwargs() takes exactly 2 arguments (1 given)
私は自分自身を次のように渡す必要があることを理解しています:
self.test_var_kwargs(self, farg=1, myarg2="two", myarg3=3)
クラス インスタンスのメソッドに引数として self を含める必要があるのはなぜですか?