que propias procedimientos por parametros opcionales omision linea funciones comando argumentos python python-3.x

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.