Поведение наследования Mutlple в python

In [5]: class a(object):
   ...:     def __init__(self):
   ...:         print "In class a"
   ...:         self.a = 1
   ...:         
In [6]: class b(object):
   ...:     def __init__(self):
   ...:         print "In class b"
   ...:         self.b = 2
   ...:         
   ...:         

In [7]: class c(b, a):
   ...:     pass
   ...: 
In [8]: c.mro()
Out[8]: 
[<class '__main__.c'>,
 <class '__main__.b'>,
 <class '__main__.a'>,
 <type 'object'>]

In [9]: obj = c()
In class b

In [10]: obj.__dict__
Out[10]: {'b': 2}

Метод по умолчанию __ init __ класса c вызывается при создании obj , которое внутренне вызывает __ init __ только класса b .

Насколько я понимаю, если я наследую от 2 классов, объект моего производного класса должен иметь переменные из обоих классов (если они не являются частными для этих классов).

Мой вопрос: ошибаюсь ли я, ожидая, что мой производный объект будет содержать переменные из обоих классов? Если да, то почему? Разве не следует также вызывать __ init __ класса a ? Что бы произошло на таком языке, как C ++?

5
задан Daniel Daranas 28 August 2013 в 16:35
поделиться