Code Explanation:
1. Defining a Custom Metaclass
class Meta(type):
A class named Meta is defined.
It inherits from type, which means Meta is a metaclass.
A metaclass controls how classes themselves are created.
2. Overriding the Metaclass __new__ Method
def __new__(cls, name, bases, dct):
print("Creating", name)
return super().__new__(cls, name, bases, dct)
__new__ is called when a new class object is being created.
Parameters:
cls → the metaclass (Meta)
name → name of the class being created ("A", "B")
bases → parent classes
dct → dictionary containing class attributes/methods
This prints:
Creating <ClassName>
Then it delegates actual class creation to type.__new__.
3. Creating Class A Using the Metaclass
class A(metaclass=Meta):
pass
What happens internally:
Python sees metaclass=Meta
Calls:
Meta.__new__(Meta, "A", (), class_dict)
__new__ prints:
Creating A
Class A is created.
4. Creating Subclass B of A
class B(A):
pass
A uses metaclass Meta, so B automatically also uses Meta.
Python again calls:
Meta.__new__(Meta, "B", (A,), class_dict)
This prints:
Creating B
5. Final Output
Creating A
Creating B
Final Answer
✔ Output:
Creating A
Creating B


0 Comments:
Post a Comment