title: Using the __call__ method of a metaclass instead of __new__?
body: <p>When discussing metaclasses, <a href="http://docs.python.org/reference/datamodel.html" rel="noreferrer">the docs</a> state:</p>
  <blockquote>
  <p>You can of course also override other class methods (or add new
  methods); for example defining a custom <code>__call__()</code> method in the
  metaclass allows custom behavior when the class is called, e.g. not
  always creating a new instance.</p>
  </blockquote>
  <p><em>[Editor's note: This was removed from the docs in 3.3. It's here in 3.2: <a href="https://docs.python.org/3.2/reference/datamodel.html#customizing-class-creation" rel="noreferrer">Customizing class creation</a>]</em></p>
  <p>My questions is: suppose I want to have custom behavior when the class is called, for example caching instead of creating fresh objects. I can do this by overriding the <code>__new__</code> method of the class. When would I want to define a metaclass with <code>__call__</code> instead? What does this approach give that isn't achievable with <code>__new__</code>?</p>