我无法通过错误:
Traceback (most recent call last):
File "C:\Users\Dom\Desktop\test\test.py", line 7, in <module>
p = Pump.getPumps()
TypeError: getPumps() missing 1 required positional argument: 'self'
我检查了几个教程,但似乎与我的代码没有任何不同。我唯一能想到的是Python 3.3需要不同的语法。
class Pump:
def __init__(self):
print("init") # never prints
def getPumps(self):
# Open database connection
# some stuff here that never gets executed because of error
pass # dummy code
p = Pump.getPumps()
print(p)
如果我理解正确,self会自动传递给构造函数和方法。我哪里做错了?
我得到了同样的错误如下:
test()缺少一个必需的位置参数:'self'
当一个实例方法有self时,我直接通过类名调用它,如下所示:
class Person:
def test(self): # <- With "self"
print("Test")
Person.test() # Here
并且,当一个静态方法有self时,我通过对象或直接通过类名调用它,如下所示:
class Person:
@staticmethod
def test(self): # <- With "self"
print("Test")
obj = Person()
obj.test() # Here
# Or
Person.test() # Here
所以,我用object调用实例方法,如下所示:
class Person:
def test(self): # <- With "self"
print("Test")
obj = Person()
obj.test() # Here
并且,我从静态方法中删除了self,如下所示:
class Person:
@staticmethod
def test(): # <- "self" removed
print("Test")
obj = Person()
obj.test() # Here
# Or
Person.test() # Here
然后,错误得到了解决:
Test
详细地,我在回答什么是Python中的“实例方法”时解释了实例方法。并在我回答Python中的@classmethod vs @staticmethod时解释@staticmethod和@classmethod。
我得到了同样的错误如下:
test()缺少一个必需的位置参数:'self'
当一个实例方法有self时,我直接通过类名调用它,如下所示:
class Person:
def test(self): # <- With "self"
print("Test")
Person.test() # Here
并且,当一个静态方法有self时,我通过对象或直接通过类名调用它,如下所示:
class Person:
@staticmethod
def test(self): # <- With "self"
print("Test")
obj = Person()
obj.test() # Here
# Or
Person.test() # Here
所以,我用object调用实例方法,如下所示:
class Person:
def test(self): # <- With "self"
print("Test")
obj = Person()
obj.test() # Here
并且,我从静态方法中删除了self,如下所示:
class Person:
@staticmethod
def test(): # <- "self" removed
print("Test")
obj = Person()
obj.test() # Here
# Or
Person.test() # Here
然后,错误得到了解决:
Test
详细地,我在回答什么是Python中的“实例方法”时解释了实例方法。并在我回答Python中的@classmethod vs @staticmethod时解释@staticmethod和@classmethod。