Code Explanation:
1. Defining the Task Class
class Task:
A class named Task is defined.
Objects of this class will later be used like functions.
2. Defining the __call__ Method
def __call__(self):
return "run"
__call__ makes an object callable.
When a Task object is called like task(), it returns "run".
3. Defining the Worker Class
class Worker:
A class named Worker is defined.
4. Creating a Class Attribute with a Callable Object
job = Task()
job is a class attribute, not an instance attribute.
It stores one single instance of Task.
This same Task object is shared by all Worker instances.
5. Creating Two Instances of Worker
w1 = Worker()
w2 = Worker()
Two objects, w1 and w2, are created.
Neither object has its own job attribute.
Both will access job from the class Worker.
6. Calling the Shared Callable Attribute
print(w1.job(), w2.job())
Step-by-step for w1.job():
Python looks for job in w1.__dict__ → not found.
Python finds job in Worker.
job is a Task object.
Python calls Task.__call__() → returns "run".
Same steps happen for w2.job().
7. Final Output
run run
Final Answer
✔ Output:
run run

0 Comments:
Post a Comment