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