__repr__— developer repr (eval-safe),__str__— user-friendly string__len__,__getitem__,__setitem__— sequence protocol__enter__/__exit__— context manager__eq__,__lt__,__hash__— comparison và hashability__call__— cho phép gọi instance như function__iter__/__next__— iterator protocol
Lưu ý: Khi override __eq__, Python tự động set __hash__ = None — phải define __hash__ thủ công nếu muốn dùng object trong set/dict.
__repr__— developer repr,__str__— user string__len__,__getitem__— sequence protocol__enter__/__exit__— context manager__eq__,__hash__— comparison__call__— callable instances__iter__/__next__— iterator
Pitfall: Overriding __eq__ sets __hash__ = None — must define __hash__ manually if needed in sets/dicts.