Saya baru mengenal python dan telah menabrak dinding. Saya mengikuti beberapa tutorial tetapi tidak bisa melewati kesalahan:
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'
Saya memeriksa beberapa tutorial tetapi sepertinya tidak ada yang berbeda dari kode saya. Satu-satunya hal yang dapat saya pikirkan adalah bahwa python 3.3 memerlukan sintaks yang berbeda.
skrip utama:
# test script
from lib.pump import Pump
print ("THIS IS A TEST OF PYTHON") # this prints
p = Pump.getPumps()
print (p)
Kelas pompa:
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
Jika saya mengerti benar "diri" dilewatkan ke konstruktor dan metode secara otomatis. Apa yang saya lakukan salah di sini?
Saya menggunakan windows 8 dengan python 3.3.2
python
python-3.x
Dominasi
sumber
sumber
Anda perlu menginisialisasi terlebih dahulu:
sumber
Bekerja dan lebih sederhana daripada solusi lain yang saya lihat di sini:
Ini bagus jika Anda tidak perlu menggunakan instance kelas. Diuji pada Python 3.7.3.
sumber
Anda juga bisa mendapatkan kesalahan ini dengan mengambil saran PyCharm sebelum waktunya untuk menjelaskan metode @staticmethod. Hapus anotasi.
sumber
Kata kunci 'diri' dalam python adalah analog dengan kata kunci 'ini' di c ++ / java / c #.
Dalam python 2 itu dilakukan secara implisit oleh kompiler
(yes python does compilation internally)
. Hanya saja di python 3 Anda perlu menyebutkannyaexplicitly
di konstruktor dan fungsi anggota. contoh:sumber