Eu sou novo em python e bati em uma parede. Segui vários tutoriais, mas não consigo passar pelo erro:
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'
Examinei vários tutoriais, mas não parece haver nada diferente do meu código. A única coisa que consigo pensar é que o python 3.3 requer sintaxe diferente.
scipt principal:
# test script
from lib.pump import Pump
print ("THIS IS A TEST OF PYTHON") # this prints
p = Pump.getPumps()
print (p)
Classe 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
Se eu entendi corretamente "self" é passado para o construtor e métodos automaticamente. O que eu estou fazendo errado aqui?
Estou usando o Windows 8 com python 3.3.2
python
python-3.x
DominicM
fonte
fonte
Você precisa inicializá-lo primeiro:
fonte
Funciona e é mais simples do que qualquer outra solução que vejo aqui:
Isso é ótimo se você não precisar reutilizar uma instância de classe. Testado em Python 3.7.3.
fonte
Você também pode obter esse erro seguindo prematuramente os conselhos do PyCharm para anotar um método @staticmethod. Remova a anotação.
fonte
A palavra-chave 'self' em python é análoga à palavra-chave 'this' em c ++ / java / c #.
No python 2, isso é feito implicitamente pelo compilador
(yes python does compilation internally)
. É só que no python 3 você precisa mencioná-loexplicitly
nas funções de construtor e membro. exemplo:fonte