多余的python参数

Lei*_*sen 1 python parameters class function

我注意到调用python参数的方式存在差异.在我处理过的每一种语言中,你都有

foo() 
Run Code Online (Sandbox Code Playgroud)

意思是没有参数,或者你喜欢的参数,或者

foo(arg1, arg2,...,argn)
Run Code Online (Sandbox Code Playgroud)

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

class foo(object):
    def bar(self, arg1, arg2):
        pass
Run Code Online (Sandbox Code Playgroud)

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

zoo = foo()
zoo.bar(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

自我参数在哪里?

谢谢.

sep*_*p2k 6

自我参数在哪里?

当你调用这个函数时它就在点的前面,就像你的情况一样zoo.

请注意,您也可以将该函数调用为foo.bar(zoo, arg1, arg2).基本上在python中object.method(arguments)是一个捷径objects_class.method(object, arguments).

  • 不完全的.关于从`object.method(arguments)`到`objects_class.method(object,arguments)`的转换,重要的是`objects_class`是在运行时确定的.这意味着在调用方法时不必知道对象的类.所以你不能通过一个python源代码并用`class.method(obj)`替换`obj.method()`的每个出现,因为你并不总是知道obj的类. (4认同)