title: Is there any reason to choose __new__ over __init__ when defining a metaclass?
body: <p>I've always set up metaclasses something like this:</p>
  
  <pre><code>class SomeMetaClass(type):
      def __new__(cls, name, bases, dict):
          #do stuff here
  </code></pre>
  
  <p>But I just came across a metaclass that was defined like this:</p>
  
  <pre><code>class SomeMetaClass(type):
      def __init__(self, name, bases, dict):
          #do stuff here
  </code></pre>
  
  <p>Is there any reason to prefer one over the other?</p>
  
  <p><strong>Update</strong>:  Bear in mind that I'm asking about using <code>__new__</code> and <code>__init__</code> in a metaclass.  I already understand the difference between them in another class.  But in a metaclass, I can't use <code>__new__</code> to implement caching because <code>__new__</code> is only called upon class creation in a metaclass.</p>