多余的Python参数
我发现了一个关于Python参数调用的不同之处。在我接触过的其他编程语言中,参数的使用方式通常是这样的:
foo()
这意味着要么没有参数,要么可以有任意数量的参数,或者是:
foo(arg1, arg2,...,argn)
在这种情况下,你在定义函数和调用函数时需要传入相同数量的参数。然而在Python中,我注意到函数的定义和调用可以有两组不同的参数,这通常包括:
class foo(object):
def bar(self, arg1, arg2):
pass
但是,当我想要调用这个函数时,我只需要:
zoo = foo()
zoo.bar(arg1, arg2)
那么,self这个参数去哪儿了呢?
谢谢。
4 个回答
1
zoo
在你的例子中是自动作为第一个参数传递的。
3
zoo
是自我参数。
举个例子,在C++中,你会隐式地得到一个对象,它通过 this
指针传递过来。而在Python中,这个参数是显式的,也就是说你需要明确地写出来。
7
self参数去哪儿了?
它在你调用函数时的点前面,也就是说在你的例子中就是zoo
。
注意,你也可以这样调用这个函数:foo.bar(zoo, arg1, arg2)
。基本上,在Python中,object.method(arguments)
其实是objects_class.method(object, arguments)
的简写。