पाठ 26 / 47
डंडर मेथड
डबल-अंडरस्कोर मेथड आपके ऑब्जेक्ट को बिल्ट-इन ऑपरेटर और फ़ंक्शन के साथ काम करने देते हैं।
__str__ और __repr__
__str__ print(obj) / str(obj) को नियंत्रित करता है; __repr__ REPL में दिखने वाला डेवलपर-केंद्रित प्रतिनिधित्व है।
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
def __str__(self):
return f"({self.x}, {self.y})"
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
p = Point(2, 3)
print(p) # (2, 3) -- uses __str__
print([p]) # [Point(x=2, y=3)] -- uses __repr____eq__
__eq__ परिभाषित करता है कि आपके ऑब्जेक्ट के लिए == का मतलब क्या है — इसके बिना, "बराबर दिखने वाले" दो ऑब्जेक्ट पहचान के आधार पर असमान माने जाते हैं।
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
print(Point(1, 2) == Point(1, 2)) # True