10
วิธีที่สวยงามในการสนับสนุนความเท่าเทียม ("ความเท่าเทียมกัน") ในคลาส Python
เมื่อเขียนคลาสที่กำหนดเองมักเป็นสิ่งสำคัญที่จะอนุญาตให้มีความเท่าเทียมกันโดยใช้ตัวดำเนินการ==และ !=ใน Python สิ่งนี้เกิดขึ้นได้โดยการใช้__eq__และ__ne__วิธีพิเศษตามลำดับ วิธีที่ง่ายที่สุดที่ฉันพบว่าทำคือวิธีการต่อไปนี้: class Foo: def __init__(self, item): self.item = item def __eq__(self, other): if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ else: return False def __ne__(self, other): return not self.__eq__(other) คุณรู้วิธีที่สง่างามมากขึ้นในการทำเช่นนี้? คุณรู้ถึงข้อเสียใด ๆ ในการใช้วิธีการเปรียบเทียบข้างต้น__dict__หรือไม่? หมายเหตุ : การชี้แจงเล็กน้อย - เมื่อ__eq__และ__ne__ไม่ได้กำหนดคุณจะพบพฤติกรรมนี้: >>> a = Foo(1) >>> b = Foo(1) >>> …