Apabila semua orang mempelajari Python berorientasikan objek, mereka akan sentiasa menghadapi kewujudan yang sukar difahami: diri sendiri.
Siapakah diri ini? Mengapa setiap kaedah contoh kelas mempunyai kendiri parameter Apakah peranan yang dimainkannya
"Mari kita buat kesimpulan dahulu: selepas kelas dibuat seketika? Mewakili contoh (objek) itu sendiri "
Cara paling mudah untuk memahami diri ialah anda menganggap diri sebagai "kad ID bagi contoh (objek)."
Kelas Python Ia tidak boleh digunakan secara langsung Ia hanya boleh berfungsi dengan mencipta contoh (objek) Setiap contoh (objek) adalah unik dan ia boleh memanggil kaedah dan sifat kelas. Kelas adalah seperti pemilikan jiwa, membenarkan contoh (objek) mempunyai fungsi (diri) mereka sendiri.
Pemula akan mendapati bahawa terdapat kendiri parameter tetap dalam kaedah kelas (kaedah pembina dan kaedah contoh). Sama seperti kad ID, contoh boleh menggunakan kad ID untuk memanggil kaedah kelas.
Analogi kepada manusia, manusia ialah kelas Python, setiap individu mewakili contoh (objek), dan kad ID setiap orang mewakili diri dalam Python, setiap orang boleh Anda gunakan kad ID anda untuk pergi ke kolej, menaiki kereta api berkelajuan tinggi, menginap di hotel... (kaedah), dan contoh (objek) dalam Python juga boleh menggunakan kaedah kelas panggilan kendiri.
Di atas menggunakan analogi untuk menerangkan maksud diri Dalam analisis akhir, diri mewakili contoh itu sendiri "Apabila contoh (objek) memanggil kaedah kelas. Objek secara automatik akan menghantar rujukannya sendiri kepada kaedah sebagai parameter pertama, dan parameter pertama ialah diri "
Dan diri hanyalah cara penulisan konvensional, anda boleh menggunakan mana-mana nama lain dan bukannya diri. Ia tidak akan mengubah maksud kod, tetapi kami biasanya tidak melakukannya.
Untuk menggambarkan peranan diri dengan lebih baik, mari kita ambil contoh di bawah kelas Pelajar:
class Students: # 构造方法 def __init__(self,name): self.name = name # 实例方法 def study(self,examination_results): self.examination_results = examination_results print("同学{}的考试分数是{}".format(self.name,self.examination_results)) print("该实例对象的地址是{}".format(self))
Mari kita ambil contoh pelajar_a dahulu.
studend_a = Students('studend_a') print(studend_a.name)
Hasil cetakan keluar: student_a.
Mari kita ambil contoh lain pelajar_b.
studend_b = Students('studend_b') print(studend_b.name)
Hasil cetakan keluar: student_b.
Ia boleh dilihat bahawa kejadian (objek) adalah berbeza dan hasil cetakan juga berbeza Apabila kelas dijadikan instantiated, self.name sebenarnya sama dengan instance (object).name.
Mari kita ambil kod tadi sebagai contoh Mari kita panggil kaedah contoh di dalam, dan diri akan dicetak, yang akan menjadikannya lebih jelas.
Instance student_a:
studend_a = Students('studend_a') print(studend_a.study(80))
Hasil keluaran:
Skor ujian pelajar student_a ialah 80. Alamat objek instance ialah <「main」.Students object at 0x00000129EB0F6A90>.
Instance student_b:
studend_b = Students('studend_b') print(studend_b.study(80))
Hasil keluaran:
Skor peperiksaan pelajar student_b ialah 80. Alamat objek instance ialah <「main」.Students object at 0x00000129EB0F6B38>.
Anda boleh melihat dengan jelas bahawa diri yang dicetak oleh kedua-dua kejadian adalah berbeza, kerana diri mewakili tika (objek) itu sendiri.
Mengambil contoh student_b sebagai contoh, apabila mencetak sendiri, maklumat objek berikut muncul.
<__main__.Students object at 0x00000129EB0F6B38>.
Jika anda mencetak student_b sekali lagi, hasil yang sama akan muncul.
print(student_b)
Output:
<__main__.students object at>.
Adakah jelas pada masa ini bahawa selepas kelas diwujudkan, diri mewakili tika (objek) itu sendiri.
Atas ialah kandungan terperinci Mari kita bercakap tentang Diri dalam Python, siapa itu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!