我注意到调用python参数的方式存在差异。在我处理的其他语言中,你要么
foo()
表示没有参数,或者您想要的参数数量,或
foo(arg1, arg2,...,argn)
您传入相同数量的参数来定义函数并调用它。然而,在python中,我注意到函数定义,以及调用函数时,可以有两个不同的参数集,这通常包括:
class foo(object):
def bar(self, arg1, arg2):
pass
但是,当我想调用该函数时,我所要做的就是:
zoo = foo()
zoo.bar(arg1, arg2)
自我参数在哪里?
谢谢。
答案 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)