Code Explanation:
1) Defining a Metaclass
class Meta(type):
Meta is a metaclass because it inherits from type.
Metaclasses are “classes of classes”, i.e., they define how classes themselves are created.
2) Overriding __new__
def __new__(cls, name, bases, dct):
__new__ is called when a class is being created, not an instance.
Parameters:
cls: the metaclass itself (Meta)
name: name of the class being created ("A")
bases: tuple of base classes (() in this case)
dct: dictionary of attributes defined in the class body
3) Modifying the Class Dictionary
dct["id"] = 99
Adds a new attribute id = 99 to the class dictionary before the class is created.
This means any class created with this metaclass will automatically have an id attribute.
4) Calling the Superclass __new__
return super().__new__(cls, name, bases, dct)
Calls type.__new__ to actually create the class object.
Returns the newly created class.
class A(metaclass=Meta):
pass
5) Creating Class A
A is created using Meta as its metaclass.
During creation:
Meta.__new__ is called
dct["id"] = 99 is injected
A class object is returned
print(A.id)
6) Accessing the Injected Attribute
A.id → 99
The metaclass automatically added id to the class.
Output
99
Download Book - 500 Days Python Coding Challenges with Explanation


0 Comments:
Post a Comment