关于参数的Python TypeError

Ran*_*lue 0 python

这是我的代码:

class bla:
    def function1():
        print 1
    def function2():
        bla.function1()

x = bla()

x.function2()
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我得到错误"TypeError:function2()不接受任何参数(1给定)"因为我似乎没有传递任何参数function2.

Use*_*ess 6

self通过对其对象的隐式引用来调用常规方法- 否则它们将无法访问其任何数据成员x.

它们应该总是这样声明:

class bla:
    def function1(self):
        print 1
Run Code Online (Sandbox Code Playgroud)

如果你想让它们对对象进行操作(例如self,松散地等同this于C++中的指针).

或者,如果你不关心对象(所以你真的只是使用类将一些函数组合在一起),你可以static这样做:

class bla:
    @staticmethod
    def function1():
        print 1

    @staticmethod
    def function2():
        bla.function1()
Run Code Online (Sandbox Code Playgroud)

事实上,这是你可以调用的唯一途径bla.function1(),而不实例bla从你的function2.