title: What do __init__ and self do in Python?
body: <p>I'm learning the Python programming language and I've came across something I don't fully understand. </p>
  
  <p>In a method like:</p>
  
  <pre><code>def method(self, blah):
      def __init__(?):
          ....
      ....
  </code></pre>
  
  <p>What does <code>self</code> do?  What is it meant to be?  Is it mandatory?</p>
  
  <p>What does the <code>__init__</code> method do?  Why is it necessary? (etc.)</p>
  
  <p>I think they might be OOP constructs, but I don't know very much.</p>