Как сказал Икке, множественное наследование не имеет ничего общего с полиморфизмом.
Если бы я мог нарисовать диаграмму классов, множественное наследование выглядит так:
Base A Base B
^ ^
\ /
\ /
Child
Итак, класс Child
будет наследовать как атрибуты, так и поведение от обоих классов. Многие языки, такие как Java и PHP, не позволяют этого, но Python делает.
Полиморфизм , с другой стороны, это когда вы можете абстрагироваться от специализации. Прежде всего, диаграмма классов:
Animal
^ ^
/ \
/ \
Cat Dog
И вы можете сделать следующее:
// Assuming we have a pack of animals
// This is Java
for (Animal pet : pack)
pet.speak();
Каждый pet
будет говорить разные вещи в зависимости от реализации.