Я новичок в Python и ударил стену. Я следовал нескольким учебникам, но не могу обойти ошибку:
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'
Я изучил несколько учебных пособий, но, похоже, ничто не отличается от моего кода. Единственное, о чем я могу думать, это то, что python 3.3 требует другого синтаксиса.
основной скипт:
# test script
from lib.pump import Pump
print ("THIS IS A TEST OF PYTHON") # this prints
p = Pump.getPumps()
print (p)
Класс насоса:
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
Если я правильно понимаю, «я» передается конструктору и методам автоматически. Что я здесь не так делаю?
Я использую Windows 8 с Python 3.3.2
python
python-3.x
DominicM
источник
источник
Вы должны сначала инициализировать его:
источник
Работает и проще, чем любое другое решение, которое я вижу здесь:
Это замечательно, если вам не нужно повторно использовать экземпляр класса. Протестировано на Python 3.7.3.
источник
Вы также можете получить эту ошибку, преждевременно приняв совет PyCharm для аннотирования метода @staticmethod. Удалить аннотацию
источник
«Я» ключевое слово в питон аналогично «это» ключевое слово в C ++ / Java / C #.
В Python 2 это делается неявно компилятором
(yes python does compilation internally)
. Просто в Python 3 вы должны упомянуть этоexplicitly
в конструкторе и функциях-членах. пример:источник