define class with metaclass
class Widget(object, metaclass=type): pass
class definition in detail
namespace = metaclass.\_\_prepare\_\_(name, bases, **kwargs) Wiget = metaclass.\_\_new\_\_(metaclass, name, bases, namespace, **kwargs) metaclass.\_\_init\_\_(Widget, name, bases, namespace, **kwargs)
when __prepare__ override ?
cusomize the type or initial value of the namespace mapping
when __new__ override?
allocate and optionally configure new class object
where **kwargs comes from?
from class definition class MyClass(metaclass=MyMetaclass, kwarg1 ="asdf):
metamethod difference from @classmethod
metamethod is not visible from instance
a = MyClass() What method invoked?
MyClass.__class__.__call__()