Code Explanation:
1. Creating an Empty List
names = []
A global list named names is created.
This list will be used to store class names.
2. Defining the Base Class
class Base:
A class named Base is defined.
It will act as a parent class for other classes.
3. Defining __init_subclass__
def __init_subclass__(cls):
names.append(cls.__name__)
__init_subclass__ is a special class method.
It is automatically called whenever a subclass of Base is created.
cls refers to the new subclass, not Base.
cls.__name__ gets the name of the subclass.
That name is appended to the names list.
4. Creating Subclass A
class A(Base): pass
What happens internally:
Python creates class A.
Since A inherits from Base, Python automatically calls:
Base.__init_subclass__(A)
"A" is added to names.
Now:
names == ["A"]
5. Creating Subclass B
class B(Base): pass
What happens:
Python creates class B.
Because B also inherits from Base, Python calls:
Base.__init_subclass__(B)
"B" is added to names.
Now:
names == ["A", "B"]
6. Printing the List
print(names)
Prints all collected subclass names.
7. Final Output
['A', 'B']
✅ Final Answer
✔ Output:
['A', 'B']

0 Comments:
Post a Comment