182. Metaclasses

Snippet 1: Basic Metaclass Example

class MyMeta(type):
    def __new__(cls, name, bases, dct):
        print(f"Creating class {name}")
        return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=MyMeta):
    pass

# Output: Creating class MyClass

Snippet 2: Adding Custom Attributes to Classes

class AttributeAddingMeta(type):
    def __new__(cls, name, bases, dct):
        dct['custom_attribute'] = "Hello from metaclass"
        return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=AttributeAddingMeta):
    pass

print(MyClass.custom_attribute)  # Output: Hello from metaclass

Snippet 3: Validating Class Attributes


Snippet 4: Modifying Methods in a Class


Snippet 5: Enforcing Singleton Pattern


Snippet 6: Dynamically Creating Classes


Snippet 7: Customizing Class Instantiation


Snippet 8: Preventing Class Inheritance


Snippet 9: Adding Class Methods Automatically


Snippet 10: Counting Class Instances


Last updated