# डंडर मेथड — Python Fundamentals: Basics से Async तक

Source: https://www.skillbyai.com/hi/python/py-dunder-methods

> __str__, __repr__ और __eq__ लागू करके objects को print, == और अन्य built-ins के साथ काम करने लायक बनाएँ।

## __str__ और __repr__

`__str__` `print(obj)` / `str(obj)` को नियंत्रित करता है; `__repr__` REPL में दिखने वाला डेवलपर-केंद्रित प्रतिनिधित्व है।

```python
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__` परिभाषित करता है कि आपके ऑब्जेक्ट के लिए `==` का मतलब क्या है — इसके बिना, "बराबर दिखने वाले" दो ऑब्जेक्ट पहचान के आधार पर असमान माने जाते हैं।

```python
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
```
