title: Why should we use -> in def __init__(self, n) -> None:?
body: <p>Why should we use <code>-&gt;</code> in <code>def __init__(self, n) -&gt; None:</code>? I read the following excerpt <a href="https://www.python.org/dev/peps/pep-0484/#the-meaning-of-annotations" rel="noreferrer">from PEP 484</a>, but I am unable to understand what it means.</p>
  <blockquote>
  <p>(Note that the return type of <code>__init__</code> ought to be annotated with
  <code>-&gt; None</code>. The reason for this is subtle. If <code>__init__</code> assumed a
  return annotation of <code>-&gt; None</code>, would that mean that an argument-less,
  un-annotated <code>__init__</code> method should still be type-checked? Rather
  than leaving this ambiguous or introducing an exception to the
  exception, we simply say that <code>__init__</code> ought to have a return
  annotation; the default behavior is thus the same as for other
  methods.)</p>
  </blockquote>
  <p>What's the subtle difference between using <code>def __init__(self, n) -&gt; None:</code> and <code>def __init__(self, n):</code>? Can someone explain the quoted excerpt in simple words?</p>