Code Explanation:
1. Define base class A
class A:
v = 5
This creates a class named A.
v is a class attribute of A with value 5.
Class attributes are shared by the class and — unless overridden — by its instances.
2. Define subclass B that inherits A
class B(A):
This creates a class B that inherits from A.
Because of inheritance, B has access to A's attributes and methods (unless overridden).
3. Override class attribute v in B
v = 12
B defines its own class attribute v with value 12.
This shadows (overrides) the v from A for references that resolve through B or its instances (i.e., B.v or self.v inside B).
4. Define instance method show in B
def show(self):
return self.v + A.v
show(self) is an instance method of B.
self.v looks up v starting from the instance’s class (B) and finds B.v == 12.
A.v explicitly references the class attribute v defined on A (which is 5), bypassing the normal lookup.
The expression self.v + A.v therefore computes 12 + 5.
5. Create an instance of B
b = B()
Instantiates an object b of type B.
No __init__ defined, so default construction occurs; b can access class attributes/methods.
6. Call show() and print the result
print(b.show())
b.show() executes the show method on the b instance.
As explained, it returns 12 + 5 = 17.
print outputs:
17
Final Output
17


0 Comments:
Post a Comment