Вопрос №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("Привет, " + "мир!") # Привет, мир! (конкатенация)
