python - propias - TypeError: falta 1 argumento posicional requerido: ''self''
python class kwargs (4)
Necesita crear una instancia de clase aquí.
Utilizar
p = Pump()
p.getPumps()
Pequeño ejemplo
>>> class TestClass:
def __init__(self):
print "in init"
def testFunc(self):
print "in Test Func"
>>> testInstance = TestClass()
in init
>>> testInstance.testFunc()
in Test Func
Soy nuevo en Python y he chocado contra una pared. Seguí varios tutoriales pero no puedo pasar 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 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 automáticamente al constructor y a los métodos. ¿Qué estoy haciendo mal aquí?
Estoy usando Windows 8 con Python 3.3.2
Primero debe inicializarlo:
p = Pump().getPumps()
También puede obtener este error tomando prematuramente el consejo de PyCharm para anotar un método @staticmethod. Eliminar la anotación
Tuve un problema similar. Una parte de mi código se veía así:
class player(object):
def update(self):
if self.score == game.level:
game.level_up()
class game(object):
def level_up(self):
self.level += 1
También me dio ese error sobre el yo que faltaba. Lo resolví escribiendo game.level_up(game)
lugar de game.level_up()
.
Debería funcionar para ti también.