Інформатика

Безкоштовно

Ніхто не записаний

П91. Конструктор класу

Прочитайте!

У мові Python є спеціальний метод __init__ (зліва і справа по два знаки підкреслення), який називають конструктором класу.

Цей метод викликається автоматично під час кожного створення екземпляра класу. Якщо метод __init__ містить параметри, то в інструкції створення екземпляра класу в круглих дужках  указуються аргументи, які відповідно передаються параметрам.

У нашому випадку екземпляр класу створюється за такою структурою:

<екземпляр класу>=<ім’я класу>(аргумент1,…,аргументN)

Метод __init__ викликається автоматично. Наразі виконуються такі дії. Посилання на екземпляр класу передається першому параметру методу __init__ (таким параметром є self). Це означає, що параметр self указує на об’єкт, із якого викликається метод, а всі інші значення аргументів, перелічені в круглих дужках, передаються іншим параметрам методу.

Під час створення екземпляра класу щоразу викликається метод __init__. Новий екземпляр класу передається як аргумент параметру self, а значення аргументів — відповідним параметрам методу.

Значення параметрів у методі __init__ можна присвоювати не тільки в процесі створення об’єкта, а й безпосередньо в самому методі. Наприклад: def __init__(self, a1=”файл”, a2=25):

Приклад 1. 

Перш за все відзначимо, що змінні p1 і p2 є змінними екземпляра класу, в цьому випадку — екземпляра ob1. Тепер чітко зрозуміла різниця між змінними класу та змінними екземпляра класу. За допомогою інструкції ob1 = Kl7_05 («Вивчаємо», «інформатику») створюється екземпляр класу, аргументами якого є слова Вивчаємо й інформатику.

Під час створення екземпляра класу автоматично викликається метод __init__, у результаті чого посилання на екземпляр ob1 буде присвоєно параметру self, слово Вивчаємо передається параметру а1, а слово інформатику — параметру а2. Наступними  інструкціями  (self.p1=a1 і self.p2.a2) значення цих слів присвоюються відповідно змінним p1 і p2 екземпляра ob1. У процесі ви- конання інструкції print (ob1.p1, ob1.p2) буде виведено «Вивчаємо інформатику». Отже, атрибути (змінні) p1 і p2 екземпляра класу ініціалізуються при створенні саме екземпляра класу.

Приклад 2. Для свідомішого розуміння сутності конструктора й доцільності його використання складемо програму, яка виконує ті самі дії, що й попередня програма, але без конструктора.

Як бачимо, ця програма складніша. У ній екземпляр класу створюється без аргументів і необхідно викликати метод stm, у якому значення його аргументів присвоюються змінним екземпляра, які потім виводяться на екран.

Якщо метод викликається з екземпляра класу без аргументів, то значення, що вказані в методі, зберігаються. Якщо ж в екземплярі класу вказані аргументи, то вони передаються в метод, а значення, що вказані в методі, не враховуються.

Приклад 3.

Звернемо увагу, що екземпляр класу ob3 не Тому змінюється лише значення параметра а1, має аргументів, тому вказані в методі значення а значення параметра а2 залишається незмінна параметрів (Харків і Одеса) зберігаються. В екземплярі ob2 є тільки один аргумент (Львів).

Конструктор може одночасно містити як параметри, яким не присвоюються значення, так і параметри, яким присвоюються відповідні значення. У такому разі параметри, яким не присвоюються значення, вказуються першими, а параметри, яким присвоюються значення, — після них.

Приклад 4. 

Приклад 5. Проводиться жеребкування чемпіонату Європи з футболу серед 16 команд, які залежно від отриманого номера потрапляють в одну з чотирьох груп. Якщо команда отримує номер менший 5, вона потрапляє в першу групу, якщо номер більший 4, але менший 9, то в другу групу, якщо номер більший 9, але менший 13, то в третю групу, інакше — в четверту групу. На рис. 7 зображено програму реалізації результатів жеребкування для чотирьох команд.

Після запуску програми в процесі створення екземпляра ob1 класу K17_09 викликається конструктор, у результаті чого параметр self набуває значення екземпляра класу ob1, параметр а1 — значення Динамо, параметр а2 — значення Київ, параметр а3 — значення 7. Потім викликається функція func1 із параметром а3. У ній визначається,  до  якої  групи  потрапляє команда «Динамо» і назва цієї групи запам’ятовується в змінній p3 екземпляра класу ob1. Далі виконуються аналогічні дії для екземплярів класу ob2, ob3 і ob4. У результаті для кожного об’єкта буде виділено ділянки пам’яті, у яких будуть зберігатися значення змінних p1, p2 і p3. Наступними чотирма інструкціями значення змінних кожного екземпляра класу виводяться на екран.

Самостійно розв’яжіть задачі!

Задача 1. Створіть програму з конструктором, за допомогою якої із набору «Київ», « — столиця», України» створюється повідомлення “Київ — столиця України”.

Задача 2. Створіть програму з конструктором і методом обчислення значення виразу (a2 + b2) / 2, якщо значення a і b уводяться з клавіатури.

Задача 3. Конструктор має такі значення параметрів: self, a1 = 3, a2 = 4. Створіть програму множення значень параметрів конструктора, за умови, що він викликається — з першого об’єкта без аргументів, з другого об’єкта — з аргументом 5 і 6, а з третього — з аргументом 7.

 

 

0.00 на основі 0 рейтингів

5 зірок
0%
4 зірок
0%
3 зірок
0%
2 зірок
0%
1 зірок
0%