Что такое полиморфизм
Полиморфизм имеет несколько форм:
- Специальный (Ad-Hoc) (в некоторых языках представлен механизмом перегрузки методов)
- Параметрический (в некоторых языках представлен дженериками)
- Полиморфизм подтипов (достигается с помощью механизмов наследования и апкаста). Когда говорят о полиморфизме чаще всего имеют в виду его
Полиморфизм - возможность схожим типам данных, которые явно заданы иерархией наследования иметь различные реализации (с помощью переопределения методов и апкаста)
Также в языках программирования и теории типов полиморфизмом называется способность функции обрабатывать данные разных типов.
Oct. 9, 2023, Источник
Разное поведение одного и того же метода в разных классах.
Oct. 9, 2023, Источник
Это означает, что одна и та же сущность (операция, функция, метод, объект) может использоваться для разных типов. Это делает программирование более интуитивным и простым.
Полиморфизм в операциях
Например магический метод add реалзиован и для чисел и для строк. И вызывая его мы можем скаладывать и то и другое используя интуитивно понятный оператор +
num1 = 1
num2 = 2
print(num1 + num2)
# Подобным образом оператор + для строк используется для конкатенации.
str1 = "Give me "
str2 = "Five"
print(str1+str2)
Полиморфные функции
Когда мы можем использовать функцию len для разных типов данных и для всех них она будет одинакового интуитивно считать длину объекта
print(len("Fizz Buzz"))
print(len([1, 2, 3]))
print(len({"Name": "John", "Address": "UK"}))
Различные типы данных, такие как строка, список, кортеж, множество и словарь могут работать с функцией len()
. Однако, она возвращает специфичную для каждого типа данных информацию.
Полиморфизм в методах класса
Здесь мы создали два класса Cat
и Dog
. У них похожая структура и они имеют методы с одними и теми же именами info()
и make_sound()
.
class Cat:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am a cat. My name is {self.name}.")
def make_sound(self):
print("Meow")
class Dog:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am a dog. My name is {self.name}.")
def make_sound(self):
print("Bark")
cat_obj = Cat("Ren")
dog_obj = Dog("Stimpy")
for animal in (cat_obj, dog_obj):
animal.make_sound()
animal.info()
animal.make_sound()
Oct. 9, 2023, Источник
Примеры ответов:
- Собеседование Junior Python разработ…
- Усенко Михаил | Собеседование python…
- Собеседование на позицию Senior Pyth…
- Собеседование на позицию Backend Dev…
- Собеседование на позицию Backend Dev…
- Собеседование Python 2023. Разбор ба…
- Собеседование Python developer на 30…
- luchanos | Balabot IT LIVE | Собесед…