Ich bin neu in Python und habe eine Wand getroffen. Ich habe mehrere Tutorials befolgt, kann aber den Fehler nicht überwinden:
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'
Ich habe mehrere Tutorials untersucht, aber es scheint nichts anderes zu geben als mein Code. Ich kann mir nur vorstellen, dass Python 3.3 eine andere Syntax erfordert.
Hauptskript:
# test script
from lib.pump import Pump
print ("THIS IS A TEST OF PYTHON") # this prints
p = Pump.getPumps()
print (p)
Pumpenklasse:
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
Wenn ich das richtig verstehe, wird "self" automatisch an den Konstruktor und die Methoden übergeben. Was mache ich hier falsch?
Ich verwende Windows 8 mit Python 3.3.2
python
python-3.x
DominicM
quelle
quelle
Sie müssen es zuerst initialisieren:
quelle
Funktioniert und ist einfacher als jede andere Lösung, die ich hier sehe:
Dies ist ideal, wenn Sie eine Klasseninstanz nicht wiederverwenden müssen. Getestet auf Python 3.7.3.
quelle
Sie können diesen Fehler auch erhalten, indem Sie PyCharms Rat vorzeitig befolgen, um eine Methode @staticmethod mit Anmerkungen zu versehen. Entfernen Sie die Anmerkung.
quelle
Das Schlüsselwort 'self' in Python entspricht dem Schlüsselwort 'this' in c ++ / java / c #.
In Python 2 wird dies implizit vom Compiler ausgeführt
(yes python does compilation internally)
. Es ist nur so, dass Sie es in Python 3explicitly
in den Konstruktor- und Memberfunktionen erwähnen müssen. Beispiel:quelle