Code Explanation:
๐น 1. Class Definition
class Test:
✅ Explanation:
A class named Test is created.
Inside this class, __setattr__ magic method is overridden.
๐น 2. Overriding __setattr__
def __setattr__(self, name, value):
✅ Explanation:
__setattr__ runs whenever an attribute is assigned.
For example:
obj.x = 5
internally becomes:
obj.__setattr__("x", 5)
๐น 3. Using super().__setattr__
super().__setattr__(name, value * 2)
✅ Explanation:
Before storing value,
it multiplies it by 2.
๐ Calculation
Original value:
5
Modified value:
5 * 2 = 10
๐น 4. Why super() is Important
⚠️ Important:
If we directly wrote:
self.x = value
it would again call:
__setattr__
leading to:
Infinite Recursion
So we use:
super().__setattr__()
to safely assign value.
๐น 5. Creating Object
obj = Test()
✅ Explanation:
Creates object obj of class Test.
๐น 6. Assigning Attribute
obj.x = 5
๐ What happens internally:
Python calls:
__setattr__(obj, "x", 5)
Inside method:
value * 2
becomes:
10
Then:
super().__setattr__("x", 10)
stores:
x = 10
๐น 7. Printing Attribute
print(obj.x)
✅ Explanation:
Stored value is already:
10
So output becomes:
10
๐ฏ Final Output
10

0 Comments:
Post a Comment