Dalam jawaban Anon:
"Jika Anda perlu sesuatu dari super __init__untuk dilakukan selain apa yang sedang dilakukan di kelas saat ini __init__, Anda harus menyebutnya sendiri, karena itu tidak akan terjadi secara otomatis"
Sungguh luar biasa: dia mengatakan persis kebalikan dari prinsip pewarisan.
Bukannya bahwa "sesuatu dari super __init__ (...) tidak akan terjadi secara otomatis" , itu bahwa itu AKAN terjadi secara otomatis, tetapi itu tidak terjadi karena kelas-dasar ' __init__ditimpa oleh definisi dari turunan-clas__init__
Jadi, MENGAPA mendefinisikan diturunkan_klas ' __init__, karena itu menimpa apa yang ditujukan ketika seseorang resor untuk warisan ??
Itu karena seseorang perlu mendefinisikan sesuatu yang TIDAK dilakukan di kelas dasar ' __init__, dan satu-satunya kemungkinan untuk memperolehnya adalah dengan menempatkan eksekusi dalam __init__fungsi kelas turunan' .
Dengan kata lain, seseorang perlu sesuatu di kelas dasar ' __init__selain apa yang akan secara otomatis dilakukan di kelas dasar' __init__jika yang terakhir ini tidak diganti.
BUKAN sebaliknya.
Kemudian, masalahnya adalah bahwa instruksi yang diinginkan hadir di kelas dasar ' __init__tidak lagi diaktifkan pada saat instantiation. Untuk mengimbangi inaktivasi ini, diperlukan sesuatu yang khusus: memanggil kelas dasar secara eksplisit ' __init__, untuk MENJAGA , BUKAN TAMBAH, inisialisasi dilakukan oleh kelas-dasar' __init__. Itulah tepatnya yang dikatakan dalam dokumen resmi:
Metode utama dalam kelas turunan mungkin sebenarnya ingin memperluas daripada hanya mengganti metode kelas dasar dengan nama yang sama. Ada cara sederhana untuk memanggil metode kelas dasar secara langsung: panggil saja BaseClassName.methodname (mandiri, argumen).
http://docs.python.org/tutorial/classes.html#inheritance
Itu saja ceritanya:
ketika tujuannya adalah untuk MENJAGA inisialisasi yang dilakukan oleh kelas-dasar, yaitu pewarisan murni, tidak ada yang istimewa diperlukan, seseorang hanya harus menghindari untuk mendefinisikan suatu __init__fungsi dalam kelas turunan
ketika tujuannya adalah untuk MENGGANTI inisialisasi yang dilakukan oleh kelas-dasar, __init__harus didefinisikan dalam kelas turunan
ketika tujuannya adalah untuk ADD proses ke inisialisasi yang dilakukan oleh kelas-dasar, kelas turunan ' __init__ harus didefinisikan, terdiri dari panggilan eksplisit ke kelas-dasar__init__
Apa yang saya rasa mencengangkan dalam jabatan Anon bukan hanya bahwa ia mengungkapkan kebalikan dari teori pewarisan, tetapi bahwa ada 5 orang yang lewat yang dipungut suara tanpa mengubah rambut, dan terlebih lagi tidak ada yang bereaksi dalam 2 tahun di utas yang subjek yang menarik harus dibaca relatif sering.
objectadalah kesalahan ketik. Tetapi sekarang Anda bahkan tidak memilikisuperjudul yang merujuk pada pertanyaan Anda.