查看: 1830|回复: 4

TypeError: getPumps() missing 1 required positional argument: 'self'

[复制链接]

11

主题

80

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2018-9-19 16:08:19 | 显示全部楼层 |阅读模式
我是python新手,遇到下面的错误:
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需要不同的语法。
主要内容:
# test script

  1. from lib.pump import Pump

  2. print ("THIS IS A TEST OF PYTHON") # this prints

  3. p = Pump.getPumps()

  4. print (p)
复制代码

Pump类:
  1. import pymysql

  2. class Pump:

  3.     def __init__(self):
  4.         print ("init") # never prints


  5.     def getPumps(self):
  6.                 # Open database connection
  7.                 # some stuff here that never gets executed because of error
复制代码

如果我理解正确,“self”会自动传递给构造函数和方法。我在这做错了什么?
我使用的是Windows 8和python 3.3.2
回复

使用道具 举报

4

主题

33

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-9-19 16:10:00 | 显示全部楼层
你需要在此实例化一个类实例。
使用
  1. p = Pump()
  2. p.getPumps()
复制代码

小例子 -
  1. >>> class TestClass:
  2.         def __init__(self):
  3.             print "in init"
  4.         def testFunc(self):
  5.             print "in Test Func"


  6. >>> testInstance = TestClass()
  7. in init
  8. >>> testInstance.testFunc()
  9. in Test Func
复制代码
回复

使用道具 举报

9

主题

74

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2018-9-19 16:10:49 | 显示全部楼层
你需要先将其初始化:
  1. p = Pump().getPumps()
复制代码

回复

使用道具 举报

10

主题

82

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2018-9-19 16:12:18 | 显示全部楼层
你也可以通过注释方法@staticmethod来删除此错误。
回复

使用道具 举报

4

主题

31

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2018-9-20 15:01:06 | 显示全部楼层
哇,我也是差不多的问题,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表