这是我的代码:
class bla:
def function1():
print 1
def function2():
bla.function1()
x = bla()
x.function2()
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我得到错误"TypeError:function2()不接受任何参数(1给定)"因为我似乎没有传递任何参数function2.
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.