Rumah > Artikel > pembangunan bahagian belakang > Bagaimana Saya Boleh Memastikan Kelas Python Saya Benar-Benar Sama: Panduan Kaedah Kesetaraan
Memastikan Kelas Python Anda Sama: Panduan Komprehensif untuk Kaedah Kesetaraan
Dalam Python, eq dan ne kaedah khas menyediakan cara yang mudah untuk menentukan kesetaraan untuk kelas tersuai. Walaupun pendekatan asas untuk membandingkan __dict__s ialah pilihan yang berdaya maju, ia mungkin menghadapi cabaran dengan subkelas dan saling kendali dengan jenis lain.
Pengendalian Kesetaraan yang Lebih Teguh
Untuk menangani perkara ini pengehadan, pertimbangkan pelaksanaan yang lebih komprehensif:
class Number: def __init__(self, number): self.number = number def __eq__(self, other): if isinstance(other, Number): return self.number == other.number return NotImplemented def __ne__(self, other): x = self.__eq__(other) if x is not NotImplemented: return not x return NotImplemented def __hash__(self): return hash(tuple(sorted(self.__dict__.items()))) class SubNumber(Number): pass
Versi ini termasuk:
Pengesahan dan Menguji
Untuk mengesahkan keteguhan pendekatan ini, berikut ialah satu set penegasan:
n1 = Number(1) n2 = Number(1) n3 = SubNumber(1) n4 = SubNumber(4) assert n1 == n2 assert n2 == n1 assert not n1 != n2 assert not n2 != n1 assert n1 == n3 assert n3 == n1 assert not n1 != n3 assert not n3 != n1 assert not n1 == n4 assert not n4 == n1 assert n1 != n4 assert n4 != n1 assert len(set([n1, n2, n3])) == 1 assert len(set([n1, n2, n3, n4])) == 2
Pernyataan ini menunjukkan kelakuan yang betul bagi kaedah kesetaraan dan ketekalan nilai cincang.
Dengan menerima pendekatan yang lebih komprehensif ini, anda boleh mencipta kelas Python dengan kesetaraan yang mantap pengendalian, memastikan perbandingan yang boleh dipercayai dan operasi set dan kamus yang tepat.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Memastikan Kelas Python Saya Benar-Benar Sama: Panduan Kaedah Kesetaraan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!