Code Explanation:
1. Defining the Class
class Config:
timeout = 30
A class named Config is defined.
timeout is a class attribute (shared by all instances unless overridden).
So initially:
Config.timeout = 30
2. Creating Two Objects
c1 = Config()
c2 = Config()
Two instances of Config are created: c1 and c2.
At this point:
c1.__dict__ = {}
c2.__dict__ = {}
Both read timeout from the class.
3. Assigning to c1.timeout
c1.timeout = 10
This does not change the class variable.
Instead, it creates a new instance attribute on c1.
Now:
c1.__dict__ = {"timeout": 10}
Config.timeout = 30
4. Printing the Values
print(Config.timeout, c1.timeout, c2.timeout)
Python resolves each attribute:
▶ Config.timeout
Looks on the class → 30
▶ c1.timeout
Finds instance attribute → 10
▶ c2.timeout
No instance attribute, so looks on the class → 30
5. Final Output
30 10 30
Final Answer
✔ Output:
30 10 30


0 Comments:
Post a Comment