多余的python参数

时间:2010-03-23 20:17:18

标签: python function parameters class

我注意到调用python参数的方式存在差异。在我处理的其他语言中,你要么

foo() 

表示没有参数,或者您想要的参数数量,或

foo(arg1, arg2,...,argn)

您传入相同数量的参数来定义函数并调用它。然而,在python中,我注意到函数定义,以及调用函数时,可以有两个不同的参数集,这通常包括:

class foo(object):
    def bar(self, arg1, arg2):
        pass

但是,当我想调用该函数时,我所要做的就是:

zoo = foo()
zoo.bar(arg1, arg2)

自我参数在哪里?

谢谢。

4 个答案:

答案 0 :(得分:6)

  

自我参数在哪里?

当您调用该函数时,它位于点的前面,即在您的情况下,它是zoo

请注意,您也可以将该功能称为foo.bar(zoo, arg1, arg2)。基本上在python object.method(arguments)中是objects_class.method(object, arguments)的快捷方式。

答案 1 :(得分:3)

zoo是自我参数。

例如,在C ++中,您将隐式传递的对象作为this指针。在Python中,此参数是显式的。

答案 2 :(得分:1)

隐式传递

zoo作为示例中的第一个参数。

答案 3 :(得分:0)

我记得,“zoo.bar”只给你一个可以调用的对象“zoo”的属性“bar”。所有魔法都是在构造中完成的,其中所有类的方法都被绑定到该对象,同时填充了属性字典。 考虑下一个例子:

zoo = foo()
xbar = zoo.bar
xbar(arg1, arg2)