Определение производного класса Derived, унаследованного от базового класса Base, выглядит следующим образом:
class Derived(Base):
Если базовый класс определен не в текущем модуле, наследоваться можно так:
class Derived(module_name.Base):
Разрешение имен атрибутов работает сверху вниз: если атрибут не найден в текущем классе, поиск продолжается в базовом классе, и так далее по рекурсии.
Производные классы могут переопределить методы базовых классов — все методы являются в этом смысле виртуальными.
Вызвать метод базового класса изнутри производного класса класса можно с префиксом:
Base.method()
В питоне существует ограниченная поддержка множественного наследования:
class Derived(Base1,Base2,Base3):
В этом случае поиск атрибута производится в следующем порядке:
- непосредственно в Derived;
- затем в Base1, и рекурсивно в базовых классах Base1;
- затем в Base2, и рекурсивно в базовых классах Base2
- и т.д.