多余的Python参数

2 投票
4 回答
983 浏览
提问于 2025-04-15 20:46

我发现了一个关于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)的简写。

撰写回答