【发布时间】:2012-12-29 19:11:57
【问题描述】:
我没有太多的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.test_var_kwargs(self, farg=1, myarg2="two", myarg3=3)
为什么我必须在类实例的方法中包含 self 作为参数?
【问题讨论】:
-
能否包含类函数示例的完整代码示例。我想你可能误会了。
-
无需通过
frag=1。只需将其传递为1。 -
因为它仅将
farg=1视为关键字参数。 -
@Wessie 不会误解课程。这不是重点
标签: python python-2.7 arguments keyword-argument