Вопрос26
Осталось:

Что такое полиморфизм в Python?

Образцовый ответ

Показывать ответ по умолчанию

Полиморфизм — это способность объектов разных классов реагировать на одинаковый вызов по-разному.

Полиморфизм через переопределение методов:

class Cat:
    def speak(self):
        return "Мяу!"

class Dog:
    def speak(self):
        return "Гав!"

class Duck:
    def speak(self):
        return "Кря!"

# Одинаковый интерфейс, разное поведение
animals = [Cat(), Dog(), Duck()]
for animal in animals:
    print(animal.speak())

Утиная типизация:

«Если это выглядит как утка, плавает как утка и крякает как утка — значит, это утка.»

Python не проверяет тип объекта — важно лишь наличие нужного метода:

class File:
    def read(self):
        return "данные из файла"

class Database:
    def read(self):
        return "данные из БД"

def load_data(source):
    # Не важно, какой тип — важно, что есть метод read
    return source.read()

print(load_data(File()))      # данные из файла
print(load_data(Database()))  # данные из БД

Полиморфизм встроенных функций:

# len() работает с разными типами
print(len("Python"))    # 6
print(len([1, 2, 3]))   # 3
print(len({"a": 1}))    # 1

# + работает по-разному
print(1 + 2)           # 3 (сложение)
print("Привет, " + "мир!")  # Привет, мир! (конкатенация)