› Forums › CS50’s Introduction to Computer Science by Harvard University on Edx › Week 6: Python › CS105: Introduction to Python by Saylor Academy › Unit 10: Object-Oriented Programming › Dunder methods in Python: Explanation with real-world analogy and practical implementations
- This topic is empty.
- 
		AuthorPosts
- 
		
			
				
September 5, 2024 at 1:41 am #3364Source: Created with AI tool What are Dunder Methods? Dunder methods, also known as “magic methods,” are special methods in Python that have double underscores before and after their names (e.g., __init__,__str__,__add__). These methods are automatically triggered in response to certain actions or operations involving objects. You don’t usually call dunder methods directly—they are called implicitly by Python when certain operations happen.Real-World Analogy: Imagine a robot assistant. You don’t need to tell the robot every single detail on how to perform a task like walking, talking, or picking something up—these abilities are built-in. You just ask the robot to walk, and it automatically knows what to do. Similarly, when you tell Python to perform an operation like adding two objects, comparing them, or converting them to a string, it doesn’t ask you to write out the full process each time. It has these abilities built into objects in the form of dunder methods. For example: 
 – When you typea + b, Python internally calls the__add__method.
 – When you ask Python to print an object, it calls the__str__method.Common Dunder Methods: - __init__(self): This is the initializer method, called when you create a new instance of a class. It’s used to initialize the object’s attributes.
- __str__(self): Defines how the object is represented as a string, typically used in- print()statements.
- __add__(self, other): Defines how the- +operator works between two objects.
- __len__(self): Returns the length of an object, used by- len()function.
- __eq__(self, other): Determines what happens when you use the- ==operator to compare two objects.
 Practical Implementations of Dunder Methods: - Object Initialization (__init__):
 class Car: def __init__(self, make, model): self.make = make self.model = model car = Car("Toyota", "Corolla") print(car.make) # Toyota print(car.model) # CorollaThe __init__method initializes theCarobject when it is created, setting themakeandmodelattributes.- String Representation (__str__):
 class Car: def __init__(self, make, model): self.make = make self.model = model def __str__(self): return f"{self.make} {self.model}" car = Car("Toyota", "Corolla") print(car) # Toyota CorollaThe __str__method is called when you useprint(car). Without it, you’d just get the memory address of the object. This makes it easier to understand what the object represents.- Adding Objects (__add__):
 class Point: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): return Point(self.x + other.x, self.y + other.y) def __str__(self): return f"({self.x}, {self.y})" p1 = Point(1, 2) p2 = Point(3, 4) p3 = p1 + p2 # This invokes __add__() print(p3) # (4, 6)Here, the __add__method allows you to use the+operator to add twoPointobjects by adding theirxandycoordinates.- Object Comparison (__eq__):
 class Person: def __init__(self, name, age): self.name = name self.age = age def __eq__(self, other): return self.name == other.name and self.age == other.age person1 = Person("Alice", 30) person2 = Person("Alice", 30) print(person1 == person2) # TrueThe __eq__method is invoked when comparing two objects with==. It checks whether bothPersonobjects have the samenameandage.Practical Benefits of Dunder Methods: - Clean Code: They allow you to create intuitive and easy-to-read syntax for your objects. For example, instead of having to create custom methods like add_points(), you can simply use+.
- 
Built-in Operations: With dunder methods, you can integrate your custom objects with Python’s built-in operations like addition, string conversion, comparison, etc. 
- 
Customization: You can customize how your objects behave when used in built-in functions ( len(),print(), etc.) or operations.
- 
Object-Oriented Power: Dunder methods are central to Python’s object-oriented nature, allowing objects to interact seamlessly with the language’s syntax and semantics. 
 In summary, dunder methods provide objects with the power to integrate smoothly with Python’s language features, enabling more intuitive and efficient coding while abstracting away the complexities of method calls during operations like addition or string formatting. 
- 
		AuthorPosts
- You must be logged in to reply to this topic.


