339

私はエラーを乗り越えることができません:

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自動的にコンストラクターとメソッドに渡されます。ここで何が間違っていますか?

4

6 に答える 6

443

ここでクラス インスタンスをインスタンス化する必要があります。

使用する

p = Pump()
p.getPumps()

小さな例 -

>>> class TestClass:
        def __init__(self):
            print("in init")
        def testFunc(self):
            print("in Test Func")


>>> testInstance = TestClass()
in init
>>> testInstance.testFunc()
in Test Func
于 2013-07-08T19:23:06.457 に答える
83

最初に初期化する必要があります。

p = Pump().getPumps()
于 2013-07-08T19:23:10.783 に答える
3

メソッド @staticmethod に注釈を付けるという PyCharm のアドバイスを時期尚早に実行することによっても、このエラーが発生する可能性があります。注釈を削除します。

于 2017-12-03T15:58:11.320 に答える