# Example of a metaclass that takes optional arguments class MyMeta(type): # Optional @classmethod def __prepare__(cls, name, bases, *, debug=False, synchronize=False): # Custom processing return super().__prepare__(name, bases) # Required def __new__(cls, name, bases, ns, *, debug=False, synchronize=False): # Custom processing return super().__new__(cls, name, bases, ns) def __init__(self, name, bases, ns, *, debug=False, synchronize=False): # Custom processing super().__init__(name, bases, ns) # Examples class A(metaclass=MyMeta, debug=True, synchronize=True): pass class B(metaclass=MyMeta): pass class C(metaclass=MyMeta, synchronize=True): pass