Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mentakrifkan Kesamaan Objek Tersuai dalam Python: Sekiranya Anda Melaksanakan `__eq__`?

Bagaimana untuk Mentakrifkan Kesamaan Objek Tersuai dalam Python: Sekiranya Anda Melaksanakan `__eq__`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 09:39:02887semak imbas

How to Define Custom Object Equality in Python: Should You Implement `__eq__`?

Meningkatkan Kesamaan Objek melalui Perbandingan Atribut

Dalam Python, membandingkan dua objek untuk kesamaan (menggunakan operator ==) biasanya lalai kepada perbandingan rujukan objek mereka. Walau bagaimanapun, ini mungkin tidak diingini apabila objek dari kelas yang sama mempunyai atribut yang sama tetapi rujukan objek yang berbeza.

Menyesuaikan Kesamaan Objek

Untuk mengubah suai gelagat kesamaan objek, kita boleh melaksanakan kaedah eq dalam definisi kelas. Dengan mentakrifkan kaedah eq tersuai, kami menentukan kriteria tepat untuk menentukan kesaksamaan antara kejadian kelas tersebut.

Pelaksanaan untuk MyClass

Dalam contohnya, kami mempunyai kelas MyClass dengan pembolehubah ahli foo dan bar. Kami boleh melaksanakan kaedah eq seperti berikut:

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

Dengan pelaksanaan ini, kami sedang menyemak bahawa kedua-dua objek adalah contoh MyClass dan kemudian membandingkan nilai foo dan barnya. Jika atribut ini sepadan, objek dianggap sama dan kaedah eq mengembalikan True.

Implikasi dan Pertimbangan

Melaksanakan eq menjadikan tika kelas anda tidak boleh dicincang, bermakna mereka tidak boleh disimpan dalam set atau kamus. Jika kelas anda mewakili jenis boleh ubah, anda mungkin ingin mempertimbangkan untuk membiarkan kejadian anda tidak boleh dicincang.

Untuk model data tidak berubah, adalah disyorkan untuk turut melaksanakan kaedah cincang untuk membolehkan kejadian berfungsi dengan betul dalam kamus dan set.

Kesimpulan

Dengan menyesuaikan kaedah eq, kami mendapat kawalan ke atas cara objek kelas tertentu dibandingkan untuk kesamarataan . Ini membolehkan kami mentakrifkan kesaksamaan berdasarkan atribut berkaitan objek kami, memastikan ia dianggap sama apabila atributnya sepadan, tanpa mengira rujukan objeknya.

Atas ialah kandungan terperinci Bagaimana untuk Mentakrifkan Kesamaan Objek Tersuai dalam Python: Sekiranya Anda Melaksanakan `__eq__`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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