title: Python 2.7 multiple inheritance
body: <p>Why this simple code doesn't work for Python 2.7 ? Please, help. Most likely I misuse <code>super</code> method in 'New Style' for classes.</p>
  
  <pre><code>class Mechanism(object):
      def __init__(self):
          print('Init Mechanism')
          self.__mechanism = 'this is mechanism'
  
      def get_mechanism(self):
          return self.__mechanism
  
  class Vehicle(object):
      def __init__(self):
          print('Init Vehicle')
          self.__vehicle = 'this is vehicle'
  
      def get_vehicle(self):
          return self.__vehicle
  
  class Car(Mechanism, Vehicle):
      def __init__(self):
          super(Car, self).__init__()
  
  c = Car()
  print(c.get_mechanism())
  print(c.get_vehicle())
  </code></pre>
  
  <p>The error:</p>
  
  <pre><code>Init Vehicle
  Traceback (most recent call last):
    File "check_inheritance.py", line 22, in &lt;module&gt;
      print(c.get_mechanism())
    File "check_inheritance.py", line 7, in get_mechanism
      return self.__mechanism
  AttributeError: 'Car' object has no attribute '_Mechanism__mechanism'
  </code></pre>
  
  <p><strong>EDIT</strong></p>
  
  <ol>
  <li>Fixed <code>def __init(self):</code> in <code>Mechanism</code> class onto <code>def __init__(self):</code></li>
  <li>The correct answer is to use <code>super</code> method in all classes. Not only in <code>Car</code> class. See the answer of <a href="https://stackoverflow.com/a/47874375/7550928">Martijn Pieters</a></li>
  <li>Try to avoid double underscore <code>__</code> for private variables. It is not a Python way (style of code). <a href="https://stackoverflow.com/questions/2627002/whats-the-pythonic-way-to-use-getters-and-setters">See the discussion for more info here</a>.</li>
  </ol>