我没有太多的python经验,但我正在学习**kwargs
。Python ** kwargs和自我作为参数
Afer reading a lot我了解了一些关于**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)
并打印:
正式ARG: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.test_var_kwargs(self, farg=1, myarg2="two", myarg3=3)
为什么我必须在类实例的方法中包含self作为参数?
你可能包括**类功能的完整代码示例**的例子。我想你可能 – Wessie
不需要传递'frag = 1',只需将它传递为'1' – namit
因为它只计算'farg = 1'作为关键字参数 –