Введение в Наследование в Python

Python, обладающий мультипарадигменными возможностями, очевидно, поддерживает объектно-ориентированный стиль программирования. И любой язык не может быть настолько смехотворным, чтобы требовать объектно-ориентированной методологии без поддержки наследования, включая python. Python предоставляет отчетливо уникальный вид наследования, позволяя выполнять чрезвычайно мощные операции, которых раньше не было. Хотя это имеет некоторые ограничения, например, в настоящее время безопасность через область видимости для членов класса достигается только соглашением и не является неотъемлемой частью языка. Таким образом, члены, объявленные как частные, фактически доступны публично с некоторыми изменениями.

Синтаксис класса

Синтаксис для определения производного класса при наследовании одного или нескольких базовых классов выглядит следующим образом:

class derivedClassName(baseClassName(, …)):


Как показано, производный класс задает разделенный запятыми список базовых классов для наследования в заголовке определения класса.

Классная кухня

Давайте начнем с определения базового класса, используемого для всех наших примеров:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

Показанная база определяет шаблон объекта, используемый для определения кухонь и определения того, является ли это приготовленная кухня или нет. У этого также есть конструктор, используемый, чтобы принять тип кухни. Позже создается объект типа «приготовлено».

Типы наследования в Python

Существует в основном два типа наследования, комбинация которых приводит к каждому другому типу.

1. Одиночное наследование: один базовый класс, унаследованный одним производным классом. Это самый простой тип наследования. Также минимально возможный. Производный класс автоматически вызывает конструктор базового класса.

2. Множественное наследование: несколько базовых классов, унаследованных одним производным классом. Конструкторы базового класса вызываются в том порядке, в котором были получены классы.

Производные типы наследования

Объединение двух вышеуказанных форм наследования может привести к следующим типам наследования:

1. Иерархическое наследование: один базовый класс, унаследованный несколькими производными классами. Каждый производный класс будет работать независимо, но объекты совместно используют переменные класса в разных классах.

2. Многоуровневое наследование: производный класс, служащий базовым классом для другого производного класса. В этом случае конструкторы базового класса вызываются рекурсивно.

3. Гибридное наследование: комбинация нескольких экземпляров вышеупомянутых типов наследования. Это может привести к любой мыслимой комбинации классов.

Примеры наследования в Python

Ниже приведены примеры наследования в Python:

1. Одиночное наследование

Давайте создадим класс под названием «Индийская кухня», который наследует классную кухню.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Как показано в новом классе, был создан indian_cusine, который принимает параметр типа и вызывает конструктор базового класса, передавая параметр. Это дополнительно создает новую переменную объекта place . Это используется только в производном классе и невидимо для объектов базового класса.

2. Иерархическое наследование

Давайте создадим класс ItalianCuisine, который наследует классную кухню:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Как показано в новом классе, был создан italian_cusine, который принимает параметр типа и вызывает конструктор базового класса, передавая параметр. Это дополнительно создает новую переменную объекта place . Это используется только в производном классе и невидимо для объектов базового класса. Теперь, так как два класса, indian_cusines и italian_cuisine наследуют класс кухни, реализовано иерархическое наследование.

3. Множественное наследование

Давайте создадим класс с именем FineDineCuisine, который наследуется от нескольких классов.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

Новый класс fine_dine_cuisine наследует от indian_cuisine и italian_cuisine, наследуя их параметры. Он принимает параметры типа, места и part_size. Тип и место передаются как аргументы для конструкторов базового класса. part_size - это новый параметр объекта, который не предоставляется базовым классам.

Примечание по наследованию бриллиантов:

Теперь, так как и indian_cuisine, и italian_cuisine наследуют от класса кухни, он образует классический случай наследования бриллиантов, когда несколько экземпляров базового класса прямо / косвенно присутствуют для производного класса. В большинстве языков, таких как c ++, это вызывает проблемы, или используются абстрактные классы. Python, с другой стороны, определяет свое собственное инновационное решение. Он наследует общие методы и атрибуты только один раз, отдавая предпочтение классам в порядке наследования. Таким образом, здесь, поскольку кухня наследуется дважды, предпочтение отдается версии кухни indian_cuisine, так как она наследуется первой.

Примечание для участников класса:

Любой атрибут, определенный в определении класса, но не внутри функции, становится атрибутом класса и используется всеми экземплярами класса. Таким образом, если один объект изменяет какой-либо из этих атрибутов класса, изменения видны для всех других экземпляров (будь то для того же объекта класса или объекта производного класса). Таким образом, будьте осторожны при использовании атрибутов класса, не присутствующих ни в одном определении метода.

Вывод - Наследование в Python

Python еще раз определил очень гибкий, удобный и мощный способ использования, когда объектно-ориентированная парадигма является предпочтительным маршрутом. Это определенно концепция, которую каждый может использовать и должен иметь под этим поясом. Эти концепции используются для формирования строительных блоков любого масштабируемого и обслуживаемого компонента программного обеспечения.
С помощью этого базового введения в наследование в Python вы можете идти вперед и нацеливаться на постановки реальных проблем и видеть, насколько хорошо вы можете придумать дизайн.

Рекомендуемые статьи

Это руководство по наследованию в Python. Здесь мы обсуждаем Введение, Синтаксис и типы Наследования в Python вместе с различными примерами и его реализацией кода. Вы также можете просмотреть наши другие предлагаемые статьи -

    1. Наследование в Java
    2. Что такое наследование в программировании?
    3. Наследование в C #
    4. Переопределение в Java
    5. Наследование в PHP
    6. Объявление абстрактного класса в C # с примером