Rumah > pembangunan bahagian belakang > Tutorial Python > Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

WBOY
Lepaskan: 2023-04-12 11:37:08
ke hadapan
1481 orang telah melayarinya

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

1. Definisi senario

Atribut peribadi

bermaksud bahawa dalam proses pembangunan berorientasikan objek Python, beberapa atribut objek hanya tersedia dalam objek digunakan secara dalaman, tetapi tidak mahu sifat ini diakses secara luaran.

Iaitu: atribut peribadi ialah atribut yang objek tidak mahu didedahkan kepada umum.

Kaedah peribadi

bermaksud bahawa dalam proses pembangunan berorientasikan objek Python, beberapa kaedah atau fungsi objek hanya mahu digunakan di dalam objek, tetapi tidak mahu diakses secara luaran kaedah atau fungsi ini.

Iaitu: kaedah persendirian ialah kaedah atau fungsi yang objek tidak mahu didedahkan kepada umum.

2. Definisi sintaks

Sintaks untuk mentakrifkan sifat peribadi dan kaedah persendirian dalam Python adalah seperti berikut:

class Staff:
def __init__(self, s_name, s_salary):
self.s_name = s_name
self.__salary = s_salary

def __secret(self):
print("%s 的工资是 %d" % (self.s_name, self.__salary))
Salin selepas log masuk

(1 __gaji bermula dengan dua garis bawah Ditakrifkan harta persendirian.

(2). __secret(self) ialah kaedah peribadi yang ditakrifkan bermula dengan dua garis bawah.

3. Analisis panggilan

(1) Dalam kaedah permulaan objek __init__, atribut __salary yang ditakrifkan bermula dengan dua garis bawah ialah atribut peribadi.

Sekarang panggil atribut __salary di luar objek untuk melihat sama ada atribut peribadi boleh diakses secara normal.

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Seperti yang dapat dilihat daripada hasil yang dijalankan dalam rajah di atas, baris 11, iaitu, apabila mengakses atribut persendirian __gaji objek di luar objek, ralat AttributeError digesa, dan objek Staf zhangsan tidak mempunyai atribut __gaji.

Untuk membuktikan bahawa objek kelas Staf memang mempunyai atribut instance __salary, hanya kerana atribut peribadi tidak boleh diakses di luar objek.

Saya mengubah suai diri.__gaji kepada: self.gaji, kaedah __secret(self) merujuk kepada atribut self.__salary, dan membuat pengubahsuaian yang sepadan seperti yang ditunjukkan dalam rajah di bawah.

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Ia boleh dilihat daripada hasil yang dijalankan bahawa panggilan luaran atribut bukan peribadi ini adalah normal dan tiada ralat AttributeError digesa.

(2). Dalam kaedah contoh __secret(self), kaedah __secret(self) yang ditakrifkan bermula dengan dua garis bawah ialah kaedah peribadi.

Sama seperti proses ujian di atas, mula-mula panggil kaedah persendirian __secret(diri) di luar objek untuk melihat sama ada kaedah persendirian boleh dipanggil secara normal.

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Seperti yang dapat dilihat daripada hasil yang dijalankan di atas, baris 11, iaitu, apabila mengakses kaedah persendirian __secret(self) objek di luar objek, ralat AttributeError digesa, Objek kakitangan zhangsan tidak mempunyai kaedah __secret.

Untuk membuktikan bahawa objek kelas Staf mempunyai kaedah contoh __secret(self), hanya kerana kaedah persendirian tidak boleh diakses di luar objek.

Saya mengubah suai kaedah __secret(self) kepada: secret(self), dan kod lain kekal tidak berubah Lihat hasil yang dijalankan seperti yang ditunjukkan dalam rajah di bawah.

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Dapat dilihat daripada hasil yang dijalankan bahawa panggilan luaran kaedah bukan peribadi ini adalah normal dan tiada ralat AttributeError digesa.

(3) Seperti yang dapat dilihat daripada rajah di bawah, kaedah persendirian dan sifat persendirian boleh dipanggil di dalam objek.

Kaedah kerja dalam rajah memanggil kaedah persendirian __secret(self), dan kaedah persendirian __secret(self) memanggil atribut persendirian __gaji.

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Gunakan objek kelas Staf zhangsan di luar objek untuk memanggil kaedah kerja, yang secara tidak langsung boleh mengakses sifat persendirian dan kaedah persendirian objek tersebut.

Daripada output konsol, dapat dilihat bahawa kaedah kerja biasanya boleh mengakses sifat persendirian dan kaedah persendirian yang ditakrifkan di dalam objek.

4. Atribut pseudo-private Python dan kaedah persendirian

Dalam Python, tidak ada rasa keperibadian yang sebenar, kerana Python secara dalaman membuat beberapa nama khas apabila menamakan atribut dan kaedah yang sepadan sifat dan kaedah yang tidak boleh diakses oleh dunia luar.

Mengambil atribut persendirian dan kaedah persendirian sebagai contoh, kaedah pemprosesan dalaman Python ialah:

(1 Atribut: __gaji, nama atribut yang diproses ialah: _Staff__salary(_class name__ Attribute name)

Keputusan berjalan adalah seperti yang ditunjukkan di bawah

Mari bercakap tentang sifat peribadi Python dan kaedah peribadi

Konsol tidak membuang sebarang pengecualian dan mesej ralat AttributeError sebelumnya hilang.

Contoh ini membuktikan bahawa Python bukan peribadi dalam erti kata sebenar Selepas mengetahui kaedah pemprosesan dalamannya, anda masih boleh menggunakan kaedah nama atribut _class name__ (nama kaedah) untuk mengakses luar objek kepada sifat peribadi dan kaedah persendirian yang ditakrifkan di dalam objek.

Tetapi kaedah ini tidak disyorkan dalam kerja harian Memandangkan sifat dan kaedah diisytiharkan peribadi apabila ia ditakrifkan di dalam objek, pemanggil perlu mematuhi peraturannya.

Saya hanya mahu menggunakan contoh kecil ini untuk menggambarkan bahawa Python tidak mempunyai privasi sebenar.

Atas ialah kandungan terperinci Mari bercakap tentang sifat peribadi Python dan kaedah peribadi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan