this is sure one hell of an explanation. here's a shorter one from me:
simply put, you need metaclasses when you want to overload the "instantiation operator". the __new__ in a metaclass is used for making changes to a class before instantiation, and __init__ is used for making changes after instantiation. the implicit first argument to __init__ and other instance methods in a metaclass (conventionally called self) is the implicit first argument to class methods in the metaclass instance (conventionally called cls)
note that "metaclass instance" and "class definition" are synonyms.
i can't think of a use case where __call__ would be useful, because it's technically the ctor of the metaclass instance. also, i think that using callables other than 'type' subclasses is being too clever with an already complicated concept, so i'd avoid doing it.
this is based on my practical experience with metaclasses, so i might have missed something. but that's all i'm using metaclasses for anyway.
The best metaclass explanation I have read is "Metaclasses Demystified" (http://cleverdevil.org/computing/78/), which originally appeared in Python Magazine.
Yield: http://stackoverflow.com/questions/231767/the-python-yield-k...
Decorators: http://stackoverflow.com/questions/739654/understanding-pyth...