יש הבדל בין class שעובד לבין class שמרגיש כמו Python. len(my_collection) במקום my_collection.length(). with my_resource: במקום my_resource.open(); try: ... finally: my_resource.close(). my_vector + other_vector במקום my_vector.add(other_vector). הdunder methods - ה-methods שמתחילות וגומרות עם double underscore - הם הinterface שדרכו objects משתלבים בתוך שפת Python. ה-frameworks הגדולים ביותר (Pydantic, SQLAlchemy, NumPy) בנויים עליהם.
כשNumPy מאפשרת לכם לכתוב array1 + array2 במקום np.add(array1, array2), זה לא magic - זה __add__. כשSQLAlchemy מאפשרת לכתוב User.age > 25 בתוך query, זה __gt__ שמחזיר SQL expression במקום boolean. ברגע שמבינים את ה-dunder protocol, כל ה-frameworks שנראו מסתוריים הופכים קריאים.