Метод super() в Python

Встроенный super() возвращает прокси-объект (временный объект суперкласса), позволяет нам получить доступ к методам базового класса.

Функция super() в Python делает наследование классов более управляемым и расширяемым. Функция возвращает временный объект, который позволяет ссылаться на родительский класс с помощью ключевого слова super.

Функция super() имеет два основных варианта использования:

  • Чтобы избежать явного использования класса super (parent).
  • Чтобы включить множественное наследование.

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

Рассмотрим пример ниже, где родительский класс называется ключевым словом super:

классный компьютер():
def __init__(self, компьютер,оперативная память, объём хранилища):
self.computer = компьютер
self.ram = оперативная память
self.storage = объём хранилища

# Класс Mobile наследует Компьютерный
classMobile(Компьютер):
def __init__(self, компьютер, оперативная память, объём хранилища,модель):
super().__init__(компьютер, оперативная память, объём хранилища)
self.model = модель

Apple = Mobile(‘Apple’, 2, 64, ‘iPhoneX’)
print(‘Мобильный телефон:’, Apple.computer)
print(‘Оперативная память:’, Apple.ram)
print(‘Объём хранилища:’, Apple.storage)
print(‘Модель:’, Apple.model)

На выходе:

Мобильный телефон: Apple
Оперативная память: 2
Объём хранилища: 64
Модель: iPhoneX

В приведенном выше примере Компьютер является супер — (родительским) классом, а мобильный-производным (дочерним) классом. Использование ключевого слова super в строке 10 позволяет дочернему классу получить доступ к свойству init() родительского класса.

Другими словами, super() позволяет создавать классы, которые легко расширяют функциональность ранее построенных классов, не реализуя их функциональность снова.

Множественное наследство

В следующем примере показано, как функция Super() используется для реализации множественного наследования:В приведенном выше примере Computer является супер (родительским) классом, а Mobile-производным (дочерним) классом. Использование ключевого слова super в строке 10 позволяет дочернему классу получить доступ к свойству init() родительского класса.

Другими словами, super() позволяет создавать классы, которые легко расширяют функциональность ранее построенных классов, не реализуя их функциональность снова. В следующем примере показано, как функция Super() используется для реализации множественного наследования:

class Animal:
def __init__(self, animalName):
print(animalName, ‘это животное’.);

# Млекопитающее наследует
class Mammal (Animal):
def __init__(self, mammalName):
print(mammalName, ‘это млекопитающее’.)
super().__init__(mammalName)

# CannotFlyнаследует
class Mammal CannotFly(Млекопитающее):
def __init__(self, mammalThatCantFly):
print(mammalThatCantFly, «не может летать.»)
super().__init__(mammalThatCantFly)

# CannotSwimнаследует
class Mammal CannotSwim(Mammal):
def __init__(self, mammalThatCantSwim):
print(mammalThatCantSwim, «не умеет плавать.»)
super().__init__(mammalThatCantSwim)

# Cat наследуетCannotSwimиCannotFly
classCat(CannotSwim, CannotFly):
def __init__(self):
print(«Я кот».);
super().__init__(‘Cat’)

# Код драйвера
cat = Cat()
print(«)
bat = CannotSwim(‘Летучая мышь’)

На выходе:

Я кот.
Кот не умеет плавать.
Кот не умеет летать.
Кот не млекопитающее.
Кот животное.

Летучая мышь не умеет плавать.
Летучая мышь млекопитающее.
Летучая мышь животное.

Рассмотрим экземпляр класса Cat; ниже приведен порядок событий, которые происходят после него:

  • Класс Cat называется первым.
  • Родительский класс CannotSwim вызывается, так как он появляется перед CannotFly в порядке наследования; это следует за порядком разрешения методов Python (MRO), который описывает порядок наследования методов.
  • Вызывается класс CannotFly.
  • Класс млекопитающих называется.
  • Наконец, класс Животных называется.
  • Далее рассмотрим объект летучей мыши. Летучие мыши-летающие млекопитающие, но они не умеют плавать, вот почему он создан с классом CannotSwim. Суперфункция в классе CannotSwim вызывает конструктор класса Mammal после него. Затем класс Mammal вызывает конструктор класса Animal.

Полиморфизм в Python

Буквальное значение полиморфизма — это условие возникновения различных форм. Полиморфизм — очень важное понятие в программировании. Это относится к использованию сущности одного типа (метода, оператора или объекта) для представления различных типов в различных сценариях. Давайте возьмем пример.

Полиморфизм в операторе сложения

Мы знаем, что оператор + широко используется в программах Python. Но у него нет ни одного использования.
Для целочисленных типов данных оператор + используется для выполнения операции арифметического сложения.

num1 = 1
num2 = 2
print(num1+num2)

Следовательно, вышеприведенная программа выводит 3. Аналогично, для строковых типов данных оператор + используется для выполнения конкатенации.

str1 = «Python»
str2 = «Программирование»
print(str1+» «+str2)

В результате вышеприведенная программа выводит:

Программирование Python

Здесь мы видим, что один оператор + использовался для выполнения различных операций для различных типов данных. Это одно из самых простых проявлений полиморфизма в Python.

Полиморфизм функций в Python

В Python есть некоторые функции, которые совместимы для работы с несколькими типами данных.
Одной из таких функций является функция len (). Он может работать со многими типами данных в Python. Давайте рассмотрим несколько примеров использования этой функции.

Полиморфная функция len()

print(len(«Programming»))
print(len([«Python», «Java», «C»]))
print(len({«Name»: «John», «Address»: «Nepal»}))

Выход

11
3
2

Здесь мы видим, что многие типы данных, такие как string, list, tuple, set и dictionary, могут работать с функцией len (). Однако мы видим, что он возвращает конкретную информацию о конкретных типах данных.
Примечание: Перегрузка метода, способ создания нескольких методов с одинаковым именем, но разными аргументами, невозможна в Python.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *