title: Is a constructor __init__ necessary for a class in Python?
body: <p>I read that the constructor is like the first argument passed to the class, which makes sense to me since the parameters seem to be passed to the class via the <code>__init__</code> method. For example,</p>
  
  <pre><code>class NewsStory(object):
      def __init__(self, guid, title, subject, summary, link):
          self.guid = guid
          self.title = title
          self.subject = subject
          self.summary = summary
          self.link = link
  
      def get_guid(self):
          return self.guid
  
      def get_title(self):
          return self.title
  
      def get_subject(self):
          return self.subject
  
      def get_summary(self):
          return self.summary
  
      def get_link(self):
          return self.link
  firstStory = NewsStory('Globally Unique Identifier', \
      'first_title','first_subject','This is an example \
      sumary','example_link@something.com')
  
  print firstStory.get_guid() # prints Globally Unique Identifier
  </code></pre>
  
  <p>So when I 'call' the class, I pass it the parameters from the <code>__init__</code> method? I'm new to classes, everything I read I find hard to understand and confusing. Thanks!</p>
  
  <p>Edit 1</p>
  
  <p>I found this question helpful in explaining some things, like the difference between <strong>new</strong> and <strong>init</strong>, sorry, I don't know how to add a link, gotta cut and paste: <a href="https://stackoverflow.com/questions/35452178/what-can-init-do-that-new-cannot/35452302#35452302">What can `__init__` do that `__new__` cannot?</a></p>