Перейти к основному содержимому

Python Внутренние классы

Python позволяет определить класс внутри другого класса. Такой внутренний класс может использовать свойства и методы внешнего класса, если ему передан объект внешнего класса.

Если класс нужен только в одном месте, определение его внутри другого класса позволяет держать связанный код вместе и лучше организовать программу.

Пример

Определите внутренний класс:

Prompt
Напишите на Python класс Outer, содержащий внутренний класс Inner. Создайте объект Outer и выведите его name.
Вывод: полная программа на Python

Доступ к внутреннему классу снаружи

Чтобы получить доступ к внутреннему классу снаружи, нужно сделать два шага: сначала создать объект внешнего класса, а затем с его помощью создать объект внутреннего класса:

Пример

Создайте объект внутреннего класса и вызовите его метод:

Prompt
Напишите на Python класс Outer с внутренним классом Inner, у которого есть метод display. Обратитесь к внутреннему классу снаружи.
Вывод: полная программа на Python

Доступ к внешнему классу из внутреннего класса

Объект внутреннего класса не получает автоматически связь с экземпляром внешнего класса.

Чтобы создать такую связь, передайте экземпляр внешнего класса во внутренний класс как параметр:

Пример

Передайте внутреннему классу экземпляр внешнего класса:

Prompt
Напишите на Python класс Outer, в котором внутренний класс Inner получает экземпляр внешнего класса и обращается к его свойству name.
Вывод: полная программа на Python

Практический пример

Внутренний класс часто используют как вспомогательный класс, который имеет смысл только вместе со своим внешним классом:

Пример

Двигатель автомобиля, смоделированный как внутренний класс:

Prompt
Напишите на Python класс Car с внутренним классом Engine, у которого есть методы start/stop. Метод drive класса Car проверяет состояние двигателя.
Вывод: полная программа на Python

Несколько внутренних классов

Вы не ограничены одним внутренним классом: класс может содержать несколько таких классов:

Пример

Класс с двумя внутренними классами:

Prompt
Напишите на Python класс Computer с внутренними классами CPU и RAM, у каждого из которых есть свои методы.
Вывод: полная программа на Python