Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Membandingkan Objek untuk Kesamaan Atribut dalam Python?

Bagaimanakah Saya Boleh Membandingkan Objek untuk Kesamaan Atribut dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-11-03 21:52:30292semak imbas

How Can I Compare Objects for Attribute Equality in Python?

Membandingkan Objek untuk Kesamaan Atribut

Dalam Python, membandingkan contoh objek untuk kesamaan berdasarkan atributnya boleh menjadi tugas pengaturcaraan biasa. Walau bagaimanapun, pengendali kesamaan lalai (==) dalam Python menyemak identiti objek dan bukannya nilai atribut.

Pertimbangkan contoh berikut:

<code class="python">class MyClass:
    def __init__(self, foo, bar):
        self.foo = foo
        self.bar = bar

x = MyClass('foo', 'bar')
y = MyClass('foo', 'bar')

print(x == y)  # Output: False</code>

Walaupun x dan y mempunyai nilai atribut yang sama , semakan kesamaan mengembalikan False kerana ia adalah contoh objek yang berbeza. Untuk menangani isu ini dan mempertimbangkan nilai atribut untuk kesamaan, kita perlu melaksanakan kaedah __eq__.

<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 False  # Don't compare with different types

        return self.foo == other.foo and self.bar == other.bar

print(x == y)  # Output: True</code>

Dengan mengatasi kaedah __eq__, kita boleh mentakrifkan tingkah laku kesamaan untuk kelas kita dan menyemak nilai atribut untuk perbandingan. Ini memastikan bahawa objek dengan nilai atribut yang sama dianggap sama, seperti yang dikehendaki.

Perhatikan bahawa melaksanakan __eq__ akan menjadikan objek anda tidak boleh dicincang, yang bermaksud mereka tidak boleh mengambil bahagian dalam set dan kamus sebagai kunci. Jika tingkah laku ini tidak diingini, pertimbangkan untuk melaksanakan __hash__ juga untuk menjadikan objek anda boleh dicincang, dengan syarat ia mewakili data tidak boleh diubah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Objek untuk Kesamaan Atribut dalam Python?. 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