Soy nuevo en Python y he chocado contra una pared. Seguí varios tutoriales pero no puedo superar el error:
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'
Examiné varios tutoriales, pero no parece haber nada diferente de mi código. Lo único que se me ocurre es que Python 3.3 requiere una sintaxis diferente.
scipt principal:
# test script
from lib.pump import Pump
print ("THIS IS A TEST OF PYTHON") # this prints
p = Pump.getPumps()
print (p)
Clase de la bomba:
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
Si entiendo correctamente, "self" se pasa al constructor y a los métodos automáticamente. ¿Qué estoy haciendo mal aquí?
Estoy usando Windows 8 con Python 3.3.2
python
python-3.x
DominicM
fuente
fuente
Primero debe inicializarlo:
fuente
Funciona y es más simple que cualquier otra solución que veo aquí:
Esto es genial si no necesita reutilizar una instancia de clase. Probado en Python 3.7.3.
fuente
También puede obtener este error tomando prematuramente el consejo de PyCharm para anotar un método @staticmethod. Eliminar la anotación.
fuente
La palabra clave 'self' en python es análoga a 'this' palabra clave en c ++ / java / c #.
En python 2, el compilador lo hace implícitamente
(yes python does compilation internally)
. Es solo que en Python 3 necesita mencionarloexplicitly
en las funciones de constructor y miembro. ejemplo:fuente