Назад к вопросам
Junior
89
questionbank
Что такое полиморфизм в контексте программирования?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Полиморфизм - это концепция, позволяющая работать с объектами разных классов через общий интерфейс. В Python это реализуется в основном через "дак-тайпинг" (duck typing) и наследование.
Дак-тайпинг:
Если объект может выполнить требуемые операции (у него есть необходимые методы, атрибуты), то не важно, какого он типа.
# Пример дак-тайпинга
class Dog:
def speak(self):
return "Гав!"
class Cat:
def speak(self):
return "Мяу!"
def make_sound(animal):
return animal.speak()
# Хотя Dog и Cat разные классы, make_sound работает с обоими
dog = Dog()
cat = Cat()
print(make_sound(dog))
print(make_sound(cat))
Полиморфизм через наследование:
Подклассы могут переопределять методы родительского класса, предоставляя свою специфичную реализацию.
# Пример полиморфизма через наследование
class Animal:
def speak(self):
raise NotImplementedError("Подкласс должен реализовать этот метод")
class Dog(Animal):
def speak(self):
return "Гав!"
class Cat(Animal):
def speak(self):
return "Мяу!"
def make_sound(animal):
return animal.speak()
# Объекты разных подклассов вызывают свою версию speak()
dog = Dog()
cat = Cat()
print(make_sound(dog))
print(make_sound(cat))
Преимущества:
- Упрощает код, делая его более гибким и читаемым.
- Позволяет работать с коллекциями разнородных объектов единообразно.
- Облегчает расширение системы новыми типами без изменения существующего кода.
Примеры в стандартной библиотеке Python:
- Встроенные функции like
len(),iter(),str()работают с разными типами данных. - Операторы (например,
+для сложения чисел, конкатенации строк, объединения списков).