๐ง Metaprogramming
Metaclasses
Classes that create classes.
A metaclass controls how a class itself is built. type is the default metaclass for every class.
class UpperAttrs(type):
def __new__(mcs, name, bases, attrs):
upper = {k.upper() if not k.startswith("__") else k: v
for k, v in attrs.items()}
return super().__new__(mcs, name, bases, upper)
class My(metaclass=UpperAttrs):
hello = "world"
print(My.HELLO) # world