Code Explanation:
1. Defining Class A
class A:
Explanation:
This line creates a class named A.
A class is a template used to create objects (instances).
2. Defining Method f
def f(self):
return "method"
Explanation:
A method named f is defined inside class A.
self refers to the object (instance) that calls the method.
The method returns the string "method".
So initially:
A.f() → "method"
If called through an object:
a.f() → "method"
3. Creating an Object
a = A()
Explanation:
This creates an object a of class A.
The object can access the class method f.
Example:
a.f() → "method"
4. Assigning a New Function to a.f
a.f = lambda: "instance"
Explanation:
This line creates an instance attribute f for object a.
It assigns a lambda function that returns "instance".
Lambda function:
lambda: "instance"
Important concept:
Instance attributes override class methods with the same name.
So now the object a has:
a.__dict__ = {'f': <lambda>}
Meaning:
a.f → instance function
The class method A.f still exists but is hidden for this object.
5. Calling a.f()
print(a.f())
Explanation:
Python searches attributes in this order:
Instance attributes
Class attributes
Parent classes
Since a already has an instance attribute f, Python uses that instead of the class method.
So Python executes:
lambda: "instance"
Which returns:
"instance"
6. Final Output
instance

0 Comments:
Post a Comment