What are the use cases for Python's __new__?
<p>I understand what <code>__new__</code> does (and how it's different from <code>__init__</code>) so I'm not interested in definitions, I'm interested in when and how to use <code>__new__</code>.</p>

<p>The documentation says:</p>

<blockquote>
  <p>In general, you shouldn't need to override <code>__new__</code> unless you're subclassing an immutable type like <code>str</code>, <code>int</code>, <code>unicode</code> or <code>tuple</code></p>
</blockquote>

<p>But I can't think of other cases to use <code>__new__</code> or how to use it correctly (for example when subclassing an immutable type or why it's needed in this case).</p>

<p>So, when, why and how do you need to use <code>__new__</code>? </p>

<p><strong>I'm interested in the use cases, not what it does (I know what it does).</strong></p>
