Saya memiliki kelas dengan suatu __init__
fungsi.
Bagaimana cara mengembalikan nilai integer dari fungsi ini ketika sebuah objek dibuat?
Saya menulis sebuah program, di mana __init__
parsing baris perintah dan saya perlu menetapkan beberapa nilai. Apakah OK mengaturnya di variabel global dan menggunakannya di fungsi anggota lainnya? Jika demikian, bagaimana cara melakukannya? Sejauh ini, saya mendeklarasikan variabel di luar kelas. dan mengaturnya satu fungsi tidak mencerminkan fungsi lain ??
__init__
; kami dapat membantu Anda jika Anda menjelaskan apa yang sebenarnya ingin Anda capai.Jawaban:
__init__
diperlukan untuk mengembalikan Tidak ada. Anda tidak dapat (atau setidaknya tidak) mengembalikan sesuatu yang lain.Coba buat apa pun yang Anda inginkan untuk mengembalikan variabel instan (atau fungsi).
sumber
new
disini? Apakahnew
tersirat dalam Python? Saya berasumsi semantik Python berbeda dari Java dan bahasa lain yang menggunakan kata ini.super().__init__
ke kelas turunan tanpa harus menyampaikannya melalui variabel instan.Mengapa Anda ingin melakukan itu?
Jika Anda ingin mengembalikan beberapa objek lain saat kelas dipanggil, gunakan
__new__()
metode:sumber
__init__
Anda, Anda menyadari bahwa sebenarnya, untuk memberikan fleksibilitas yang Anda inginkan, Anda memerlukan pabrik kelas yang mengembalikan instance subkelas khusus. Tapi pengguna perpustakaan Anda sudah menggunakan API yang ada. Untuk mempertahankannya, Anda mengganti__new__
untuk mengembalikan instance subkelas khusus Anda.datetime
modul dari Perpustakaan Standar. Ini digunakan__new__
dengan cara yang persis seperti ini.Dari dokumentasi
__init__
:Buktinya, kode ini:
Memberikan kesalahan ini:
sumber
Contoh Penggunaan materi yang dimaksud bisa seperti:
Saya tidak punya cukup reputasi jadi saya tidak bisa menulis komentar, ini gila! Saya berharap saya bisa mempostingnya sebagai komentar ke weronika
sumber
self
tidak ditentukan di__new__(cls, Item)
The
__init__
metode, seperti metode dan fungsi pengembalian lainnya ada secara default dengan tidak adanya pernyataan kembali, sehingga Anda dapat menulis seperti salah satu dari ini:Namun, tentu saja, menambahkan
return None
tidak akan memberi Anda manfaat apa pun.Saya tidak yakin apa yang Anda cari, tetapi Anda mungkin tertarik dengan salah satu dari ini:
cetakan:
sumber
f = Foo().value
__init__
.__init__
tidak mengembalikan apapun dan harus selalu kembaliNone
.sumber
Anda bisa mengaturnya ke variabel kelas dan membacanya dari program utama:
sumber
Hanya ingin menambahkan, Anda dapat mengembalikan kelas
__init__
Metode di atas membantu Anda menerapkan tindakan tertentu pada Pengecualian dalam pengujian Anda
sumber
super().__init__
kembaliNone
, jadi Anda kembaliNone
, yang tidak masalah, tapi mubazir.init () mengembalikan nilai tidak ada yang diselesaikan dengan sempurna
keluaran: kecepatan saya adalah 21 kmh
sumber
Nah, jika Anda tidak peduli dengan instance objek lagi ... Anda bisa menggantinya!
sumber
self
di dalam konstruktor itu.