TypeError: Missing 1 required positional argument: 'self'
我是Python的新手,撞到了墙上。我学习了一些教程,但无法克服这个错误:
1 2 3 4 | 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' |
我学习了一些教程,但似乎没有什么不同于我的代码。我唯一能想到的是,Python3.3需要不同的语法。
主要目录:
1 2 3 4 5 6 7 8 9 | # test script from lib.pump import Pump print ("THIS IS A TEST OF PYTHON") # this prints p = Pump.getPumps() print (p) |
泵类:
1 2 3 4 5 6 7 8 9 10 11 | import pymysql 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 |
如果我正确理解,"self"将自动传递给构造函数和方法。我在这里做错什么了?
我将Windows8与Python3.3.2结合使用
您需要在这里实例化一个类实例。
使用
1 2 | p = Pump() p.getPumps() |
小例子
1 2 3 4 5 6 7 8 9 10 11 | >>> class TestClass: def __init__(self): print("in init") def testFunc(self): print("in Test Func") >>> testInstance = TestClass() in init >>> testInstance.testFunc() in Test Func |
您需要先初始化它:
1 | p = Pump().getPumps() |
您还可以通过过早地接受Pycharm的建议来注释方法@staticmethod来获得此错误。删除注释。
Python中的"自我"关键字类似于C++中的"这个"关键字。
在python 2中,它是由编译器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Pump(): //member variable account_holder balance_amount // constructor def __init__(self,ah,bal): | self.account_holder = ah | self.balance_amount = bal def getPumps(self): | print("The details of your account are:"+self.account_number + self.balance_amount) //object = class(*passing values to constructor*) p = Pump("Tahir",12000) p.getPumps() |
我也有类似的问题。我的一段代码如下:
1 2 3 4 5 6 7 8 | class player(object): def update(self): if self.score == game.level: game.level_up() class game(object): def level_up(self): self.level += 1 |
它也给了我关于丢失
它也应该对你有用,但我不确定这是否是建议的方法。