我在 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:两个
另一个关键字 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 像:
self.test_var_kwargs(self, farg=1, myarg2="two", myarg3=3)
为什么我必须在类实例的方法中包含 self 作为参数?