Saya telah mendefinisikan kelas dalam file bernama Object.py
. Ketika saya mencoba mewarisi dari kelas ini di file lain, memanggil konstruktor melempar pengecualian:
TypeError: module.__init__() takes at most 2 arguments (3 given)
Ini kode saya:
import Object
class Visitor(Object):
pass
instance = Visitor() # this line throws the exception
Apa yang saya lakukan salah?
Jawaban:
Kesalahan Anda terjadi karena
Object
modul, bukan kelas. Jadi warisanmu edan.Ubah pernyataan impor Anda ke:
dan definisi kelas Anda untuk:
atau
ubah definisi kelas Anda menjadi:
sumber
ClassName
sepenuhnya? Sukaclass Visitor()
?Bahkan setelah jawaban @Mickey Perlstein dan 3 jam kerja detektifnya, saya masih perlu beberapa menit untuk menerapkan ini pada kekacauan saya sendiri. Jika ada orang lain seperti saya dan perlu sedikit bantuan lagi, inilah yang terjadi dalam situasi saya.
Kelas GeoJsonResponse awal:
Terlihat baik. Tidak ada masalah sampai Anda mencoba men-debug hal itu, yaitu ketika Anda mendapatkan banyak pesan kesalahan yang tampaknya tidak jelas seperti ini:
Kesalahannya adalah melakukan yang terbaik untuk mengarahkan saya ke arah yang benar, dan jawaban @Mickey Perlstein sudah mati, hanya perlu satu menit untuk menyatukan semuanya dalam konteks saya sendiri:
Saya mengimpor modul :
ketika saya seharusnya mengimpor kelas :
Semoga ini bisa membantu seseorang. (Dalam pembelaanku, ini masih sangat awal.)
sumber
Anda juga dapat melakukan hal berikut dalam Python 3.6.1
dan definisi kelas Anda untuk:
sumber
atau
Jika Objek adalah
.py
file.sumber
Dalam kasus saya di mana saya memiliki masalah, saya merujuk ke sebuah modul ketika saya mencoba memperluas kelas.
Jika Anda melihat Info Dokumentasi, Anda akan melihat "logging" ditampilkan sebagai modul.
Dalam kasus khusus ini saya harus mewarisi modul logging untuk membuat kelas tambahan untuk logging.
sumber