Cara Membandingkan Contoh Objek untuk Kesamaan Berdasarkan Atribut
Python secara asalnya membandingkan contoh objek melalui rujukan, bermakna walaupun dua objek mempunyai persamaan nilai atribut, mereka akan dianggap tidak sama rata. Tingkah laku ini boleh menjadi masalah apabila anda perlu melakukan semakan kesaksamaan berdasarkan atribut objek.
Satu penyelesaian kepada isu ini ialah melaksanakan kaedah __eq__ dalam kelas anda. Kaedah ini membolehkan anda mentakrifkan syarat di mana dua kejadian kelas anda dianggap sama.
Untuk melaksanakan __eq__, ikut langkah berikut:
Sebagai contoh, berikut ialah pelaksanaan __eq__ untuk kelas MyClass:
<code class="python">class MyClass: def __init__(self, foo, bar): self.foo = foo self.bar = bar def __eq__(self, other): if not isinstance(other, MyClass): return NotImplemented return self.foo == other.foo and self.bar == other.bar</code>
Dengan pelaksanaan ini, contoh MyClass boleh dibandingkan untuk kesamaan berdasarkan atribut foo dan bar mereka:
<code class="python">x = MyClass('foo', 'bar') y = MyClass('foo', 'bar') print(x == y) # True</code>
Perhatikan bahawa pelaksanaan __eq__ akan menjadikan kejadian kelas anda tidak boleh dicincang. Jika anda perlu menyimpan kejadian dalam set atau kamus, anda juga harus melaksanakan kaedah __hash__ untuk mentakrifkan fungsi cincang untuk objek anda.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Perbandingan Kesamaan untuk Contoh Objek dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!