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

Mary-Kate Olsen
Lepaskan: 2024-11-03 09:39:02
asal
833 orang telah melayarinya

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
Salin selepas log masuk

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan