0Pricing
Python Academy · Урок

Полиморфизм

Изучите, как полиморфизм обеспечивает гибкость и динамичность кода

«Полиморфизм» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 6 уроков всего.

Введение в полиморфизм

Введение в полиморфизм

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

В этом уроке Вы узнаете, как реализовать полиморфизм в Python с помощью методов и классов.

Полиморфизм — иллюстрация 1

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

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

Полиморфизм позволяет методам разных классов иметь одно и то же имя, но разное поведение. Благодаря этому код становится более гибким и его проще расширять.

# Defining a superclass
class Animal:
    # Method in the superclass
    def speak(self):
        print("Animal speaks")  # Generic message for all animals

# Defining a subclass that overrides the speak method
class Dog(Animal):
    def speak(self):
        print("Dog barks")  # Specific behavior for Dog

Полиморфизм с помощью методов

Полиморфизм с помощью методов

Методы с одинаковым именем в разных классах могут иметь разные реализации.

# Another subclass with its own implementation of the speak method
class Cat(Animal):
    def speak(self):
        print("Cat meows")  # Specific behavior for Cat

# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal

def animal_sound(animal):
    animal.speak()  # Calls the appropriate speak method based on the object type

# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()

# Calling the function with different objects
animal_sound(dog)  # Outputs: Dog barks
animal_sound(cat)  # Outputs: Cat meows

Пример полиморфизма методов

Полиморфизм с помощью методов

Методы с одинаковым именем в разных классах могут иметь разные реализации.

# Another subclass with its own implementation of the speak method
class Cat(Animal):
    def speak(self):
        print("Cat meows")  # Specific behavior for Cat

# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal

def animal_sound(animal):
    animal.speak()  # Calls the appropriate speak method based on the object type

# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()

# Calling the function with different objects
animal_sound(dog)  # Outputs: Dog barks
animal_sound(cat)  # Outputs: Cat meows

Полиморфизм с помощью функций

Полиморфизм с помощью функций

Полиморфизм позволяет одной и той же функции работать с объектами разных типов.

# Defining two unrelated classes
class Bird:
    def fly(self):
        print("Bird flies")  # Behavior specific to birds

class Plane:
    def fly(self):
        print("Plane flies")  # Behavior specific to planes

# Function demonstrating polymorphism
# It can accept objects of both Bird and Plane

def flying_object(obj):
    obj.fly()  # Calls the appropriate fly method based on the object type

# Creating objects of Bird and Plane
bird = Bird()
plane = Plane()

# Calling the function with different objects
flying_object(bird)  # Outputs: Bird flies
flying_object(plane)  # Outputs: Plane flies

Полиморфизм с помощью наследования

Полиморфизм с помощью наследования

Полиморфизм часто реализуется через наследование, при котором подклассы переопределяют методы суперкласса.

# Superclass representing a generic vehicle
class Vehicle:
    def start(self):
        print("Vehicle starts")  # Generic behavior for all vehicles

# Subclass representing a specific type of vehicle
class Car(Vehicle):
    def start(self):
        print("Car starts")  # Specific behavior for cars

# Subclass representing another specific type of vehicle
class Bike(Vehicle):
    def start(self):
        print("Bike starts")  # Specific behavior for bikes

# Function demonstrating polymorphism
# It can accept objects of any subclass of Vehicle

def start_vehicle(vehicle):
    vehicle.start()  # Calls the appropriate start method based on the object type

# Creating objects of Car and Bike
car = Car()
bike = Bike()

# Calling the function with different objects
start_vehicle(car)  # Outputs: Car starts
start_vehicle(bike)  # Outputs: Bike starts

Преимущества полиморфизма

Преимущества полиморфизма

Полиморфизм даёт несколько преимуществ:

  • Повторное использование и гибкость кода.
  • Повышение читаемости и структурированности кода.
  • Поощрение использования общих интерфейсов.

Пример из реального мира

Пример из реального мира

Рассмотрим пример полиморфизма из реального мира.

# Real-world example of polymorphism
class Developer:
    def work(self):
        print("Writing code")  # Specific task for developers

class Designer:
    def work(self):
        print("Designing user interfaces")  # Specific task for designers

# Function demonstrating polymorphism
# It can accept objects of both Developer and Designer

def workday(employee):
    employee.work()  # Calls the appropriate work method based on the object type

# Creating objects of Developer and Designer
developer = Developer()
designer = Designer()

# Calling the function with different objects
workday(developer)  # Outputs: Writing code
workday(designer)  # Outputs: Designing user interfaces

Распространённые ошибки при работе с полиморфизмом

Распространённые ошибки при работе с полиморфизмом

Вот несколько ошибок, которых следует избегать:

  • Забыть переопределить методы в подклассах, когда это необходимо.
  • Путаница в порядке разрешения методов (MRO) при множественном наследовании.
  • Необоснованное использование полиморфизма для простых задач.

Что мы узнали

Что мы узнали

В этом уроке Вы узнали:

  • Что такое полиморфизм и как он работает в Python.
  • Как реализовать полиморфизм с помощью методов и наследования.
  • О преимуществах использования полиморфизма в ООП.

Отличная работа! Переходим к следующей теме.

Полиморфизм — иллюстрация 12

Часто задаваемые вопросы

Урок «Полиморфизм» бесплатный?

Да — полный текст урока «Полиморфизм» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 6 уроков всего.

Чему я научусь в уроке «Полиморфизм»?

Изучите, как полиморфизм обеспечивает гибкость и динамичность кода Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 6.

Сколько времени занимает урок «Полиморфизм»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Классы и объекты
  2. Атрибуты и методы
  3. Наследование
  4. Полиморфизм
  5. Инкапсуляция и абстракция
  6. Специальные методы (__str__, __repr__ и другие)
← Назад к Python Academy