L6·Expert

🪞Metaclasses

Classes that create classes.

metaclasstype

§ 1type is the default metaclass

type(name, bases, dict) creates a class at runtime. class C: is sugar for that call.

§ 2class C(metaclass=Meta):

Meta.__init__ or Meta.__new__ can register, validate, or transform the class as it's built.

§ 3Usually you don't need them

Prefer decorators or __init_subclass__ for most use cases.

Example

1class UpperMeta(type):
2 def __new__(mcs, name, bases, ns):
3 ns = {k.upper() if not k.startswith('__') else k: v for k, v in ns.items()}
4 return super().__new__(mcs, name, bases, ns)
5
6class Config(metaclass=UpperMeta):
7 host = "localhost"
8 port = 8080
9
10print(Config.HOST, Config.PORT)

Try it live · Python runs in your browser

Loading playground…

Checkpoint quiz

Question 1 / 2
The default metaclass is: