НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

Python Підручник

Python СТАРТ Python Інтро Python Встановлення Python Синтаксис Python Коментарі Python Змінні Python Типи даних Python Числа Python Кастинг Python Рядки Python Булеві Python Оператори Python Списки Python Кортежі Python Набори Python Словники Python If...Else Python Цикли While Python Цикли For Python Функції Python Лямбда Python Масиви Python Класи/Об’єкти Python Успадкування Python Ітератори Python Поліморфізм Python Область дії (видимості) Python Модулі Python Дати Python Математика Python JSON Python RegEx Python PIP Python Try...Except Python Користувацький ввод Python Форматування рядка

Обробка файлів

Python Обробка файлів Python Читання файлів Python Запис/Створення файлів Python Видалення файлів

Python Modules

NumPy Tutorial Pandas Tutorial SciPy Tutorial Django Tutorial

Python Matplotlib

Matplotlib Інтро Matplotlib Початок роботи Matplotlib Pyplot Matplotlib Складання графіка Matplotlib Маркери Matplotlib Лінія Matplotlib Лейбли Matplotlib Сітка Matplotlib Subplots Matplotlib Scatter Matplotlib Бари Matplotlib Гістограми Matplotlib Кругові діаграми

Машинне навчання

Початок роботи Середній режим Стандартне відхилення Перцентиль Розподіл даних Звичайний розподіл даних Діаграма розкиду Лінійна регресія Поліноміальна регресія Множинна регресія Шкала Тренування/Тест Дерево рішень Confusion Matrix Hierarchical Clustering Logistic Regression Grid Search Categorical Data K-means Bootstrap Aggregation Cross Validation AUC - ROC Curve K-nearest neighbors

Python MySQL

MySQL Початок роботи MySQL CREATE DATABASE MySQL CREATE TABLE MySQL INSERT INTO MySQL SELECT MySQL WHERE MySQL ORDER BY MySQL DELETE FROM MySQL DROP TABLE MySQL UPDATE MySQL LIMIT MySQL JOIN

Python MongoDB

MongoDB Початок роботи MongoDB Створення бази даних MongoDB Створити колекцію MongoDB Вставити MongoDB Знайти MongoDB Запит MongoDB Сортувати MongoDB Видалити MongoDB Drop колекція MongoDB Оновлення MongoDB Ліміт

Python Reference

Python Огляд Python Вбудовані функції Python Рядкові методи Python Методи списку Python Словникові методи Python Кортежні методи Python Set методи Python Файлові методи Python Ключові слова Python Винятки Python Глосарій

Довідник модулів

Модуль Random Модуль Запитів Модуль Статистики Модуль Math Модуль cMath

Python Як зробити?

Видалити копії списків Обернути рядок Додати два числа

Python Приклади

Python Приклади Python Компілятор Python Вправи Python Вікторина Python Bootcamp Python Сертифікат

Python. W3Schools українською. Уроки для початківців

En Es

Python Поліморфізм


Слово "поліморфізм" означає "багато форм", і в програмуванні воно відноситься до методів/функцій/операторів з однаковою назвою, які можуть бути виконані для багатьох об’єктів або класів.


Поліморфізм функцій

Прикладом функції Python, яку можна використовувати для різних об’єктів, є функція len().

String / Рядок

Для рядків len() повертає кількість символів:

Приклад

x = "Hello World!"

print(len(x))
Спробуйте самі »

Tuple / Кортеж

Для кортежів len() повертає кількість елементів у кортежі:

Приклад

mytuple = ("apple", "banana", "cherry")

print(len(mytuple))
Спробуйте самі »

Dictionary / Словник

Для словників len() повертає кількість пар ключ/значення у словнику:

Приклад

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

print(len(thisdict))
Спробуйте самі »

Поліморфізм класу

Поліморфізм часто використовується в методах класу, де ми можемо мати кілька класів з однаковою назвою методу.

Наприклад, скажімо, у нас є три класи: Car, Boat і Plane, і всі вони мають метод під назвою move():

Приклад

Різні класи з одним методом:

class Car:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Drive!")

class Boat:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Sail!")

class Plane:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang")       #Створити Car клас
boat1 = Boat("Ibiza", "Touring 20") #Створити Boat клас
plane1 = Plane("Boeing", "747")     #Створити Plane клас

for x in (car1, boat1, plane1):
  x.move()
Спробуйте самі »

Подивіться на цикл for в кінці. Через поліморфізм ми можемо виконати той самий метод для всіх трьох класів.


Поліморфізм класу успадкування

А як щодо класів з дочірніми класами з однаковою назвою? Чи можемо ми тут використати поліморфізм?

Так. Якщо ми використаємо наведений вище приклад і створимо батьківський клас під назвою Vehicle, а також Car, Boat, Plane дочірні класи Vehicle, дочірні класи успадковують методи Vehicle, але може замінити їх:

Приклад

Створіть клас під назвою Vehicle і створіть Car, Boat, Plane дочірні класи Vehicle:

class Vehicle:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Move!")

class Car(Vehicle):
  pass

class Boat(Vehicle):
  def move(self):
    print("Sail!")

class Plane(Vehicle):
  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang") #Створити Car об’єкт
boat1 = Boat("Ibiza", "Touring 20") #Створити Boat об’єкт
plane1 = Plane("Boeing", "747") #Створити Plane об’єкт

for x in (car1, boat1, plane1):
  print(x.brand)
  print(x.model)
  x.move()
Спробуйте самі »

Дочірні класи успадковують властивості та методи від батьківського класу.

У прикладі вище ви бачите, що клас Car порожній, але він успадковує brand, model і move() з Vehicle.

Класи Boat і Plane також успадковують brand, model та move() з Vehicle, але вони обидва замінюють метод move().

Через поліморфізм ми можемо виконати той самий метод для всіх класів.