Python7 min read

Python Metaclasses

Control class creation with metaclasses.

David Miller
December 18, 2025
0.0k0

Advanced class customization.

What are Metaclasses?

Classes that create classes.

```python # Every class has a metaclass class MyClass: pass

print(type(MyClass)) # <class 'type'> ```

Simple Metaclass

```python class Meta(type): def __new__(cls, name, bases, attrs): # Add method to every class attrs['greet'] = lambda self: print(f"Hi from {name}!") return super().__new__(cls, name, bases, attrs)

class MyClass(metaclass=Meta): pass

obj = MyClass() obj.greet() # Hi from MyClass! ```

Validation Metaclass

```python class ValidationMeta(type): def __new__(cls, name, bases, attrs): # Check if validate method exists if 'validate' not in attrs: raise TypeError(f"{name} must have validate method") return super().__new__(cls, name, bases, attrs)

class User(metaclass=ValidationMeta): def validate(self): pass # Validation logic ```

Singleton Pattern

```python class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super().__call__(*args, **kwargs) return cls._instances[cls]

class Database(metaclass=Singleton): pass

db1 = Database() db2 = Database() print(db1 is db2) # True (same instance) ```

Remember

- Metaclasses control class creation - Use sparingly - very advanced - Consider alternatives first

#Python#Advanced#OOP