6.3. Конструктор класу

Views:
 
Category: Education
     
 

Presentation Description

Python. Конструктор класу.

Comments

Presentation Transcript

Завдання для самостійного виконання:

Профільна інформатика 10 клас Тема 6 . Класи , об'єкти, наслідування

Завдання для самостійного виконання:

6.3. конструктор класу 01.12.2018 Конструктор класу в Python 2

Завдання для самостійного виконання:

конструктор класу Ініціалізація змінних класу здійснювалася під час кожного створення його екземплярів , що є суттєвим дефектом. Для його подолання в мові Python застосовується конструктор класу . 01.12.2018 Конструктор класу в Python 3

Завдання для самостійного виконання:

Метод _ init __ У мові Python є спеціальний метод _ init __ ( зліва і справа по два знаки підкреслення ), який називають конструктором класу . Цей метод викликається автоматично під час кожного створення екземпляра класу . Якщо метод _ init _ містить параметри , то в інструкції створення екземпляра класу в круглих дужках указуються аргументи , які , відповідно , передаються параметрам. У нашому випадку екземпляр класу створюється за такою структурою: < екземпляр класу >=< ім'я класу >(аргумент1,...,аргумент N) Загальна форма методу конструктором класу така : def __ init __(self[,< параметр1>[,...,< параметрМ >]]): < тіло методу> 01.12.2018 Конструктор класу в Python 4

Завдання для самостійного виконання:

виклик метод у _ init _ Метод _ init _ викликається автоматично. Наразі виконуються такі дії . Посилання на екземпляр класу передається першому параметру методу _ init _ ( таким параметром є self). Це означає , що параметр self указує на об'єкт , із якого викликається метод, а всі інші значення аргументів , перелічені в круглих дужках, передаються іншим параметрам методу. Під час створення екземпляра класу щоразу викликається метод _ init _. Новий екземпляр класу передається як аргумент параметру self, а значення аргументів – відповідним параметрам методу. Значення параметрів у методі _ init _ можна присвоювати не тільки в процесі створення об'єкта , а й безпосередньо в самому методі . Наприклад : def ” init. ,(self, а1="файл", а2=25): 01.12.2018 Конструктор класу в Python 5

Завдання для самостійного виконання:

Приклад 1 . Програма , y якій демонструється сутність описаних процесів class K17_05: # клас K17_05 def _ init _(self,a1,a2): # конструктор класу self.p1=a1 # змінні екз . класу р1 набуває значення параметра а1 self.p2=a2 # змінні екз . класу р2 набуває значення параметра а2 #аргумент Вивчаємо передається параметру a1, аргумент інформатику - а2 ob1=K17_05(“ вивчаємо ”, ” інформатику ”) # екземпляр класу з аргументами print(ob1.p1, ob1.p2) # виведення значень змінних екз . класу 01.12.2018 Конструктор класу в Python 6

Завдання для самостійного виконання:

Найпростіша програма з конструктором Зробимо пояснення до цієї програми . Перш за все відзначимо . що змінні р1 і р2 є змінними екземпляра класу , в цьому випадку – екземпляра ob. Тепер чітко зрозуміла різниця між змінними класу та вміннями екземпляра класу . За допомогою інструкції ob1=K17_05(“ вивчаємо ”,” інформатику ”) створюється екземпляр класу , аргументами якого є слова Вивчаємо й інформатику . Під час створення екземпляра класу автоматично викликається метод _ init _, у результаті чого посилання на екземпляр ob1 буде присвоєно параметру self, слово Вивчаємо передається параметру a1, а слово інформатику – параметру а2. Наступнимн інструкціями ( self.p1=al i self.p2=a2) значення цих слів присвоюються , відповідно , змінним p1 і р2 екземпляра ob1. Тому в процесі виконання інструкції print (ob1.p1, obl,p2) на екран буде виведено Вивчаємо інформатику . Отже , атрибути ( змінні ) pl і р2 екземпляра класу ініціалізуються в процесі створення саме екземпляра класу . 01.12.2018 Конструктор класу в Python 7

Завдання для самостійного виконання:

Приклад 2 . складемо програму , яка виконує ті самі дії , що й попередня програма , але без конструктора class K17_06: # клас K17_06 def smt (self,a1,a2) : # метод smt з параметрами self.p1=a1 # змінні екз . класу р1 набуває значення параметра а1 self.p2=a2 # змінні екз . класу р2 набуває значення параметра а2 ob1=K17_06() # екземпляр класу ob1 класу K17_06 без аргументів ob1= smt (“ вивчаємо ”,” інформатику ”) # звернення до методу smt print(ob1.p1, ob1.p2) # виведення значень змінних екз . класу p1 і p2 01.12.2018 Конструктор класу в Python 8

Завдання для самостійного виконання:

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

Завдання для самостійного виконання:

Приклад 3 . Програма , у якій демонструються сформульовані положення class K17_07: # клас K17_07 def _ init _(self,a1=” Харків ”, a2=” Одеса”): #конструктор self.p1=a1 # змінні екз . класу р1 набуває значення параметра а1 self.p2=a2 # змінні екз . класу р2 набуває значення параметра а2 ob1=K17_07(“ Київ ”,”Полтава”) # екземпляр класу ob1 класу K17_06 з двома аргументами ob2= K17_07 (“ Львів ”) # екземпляр класу ob2 з одним аргументом ob3= K17_07() екземпляр класу ob1 класу K17_07 без аргументів print(ob1.p1, ob1.p2) # виведення Київ Полтава print(ob2.p1, ob2.p2) # виведення Львів Одеса print(ob3.p1, ob3.p2) # виведення Харків Одеса 01.12.2018 Конструктор класу в Python 10

Завдання для самостійного виконання:

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

Завдання для самостійного виконання:

До уваги! Конструктор може одночасно міняти як параметри , яким не присвоюються значення , так і параметри , яким присвоюються відповідні значення . У такому разі параметри , яким не присвоюються значення , вказуються першими, а параметри , яким присвоюються значення - після них. 01.12.2018 Конструктор класу в Python 12

Завдання для самостійного виконання:

Приклад 4 . Програма з різними параметрами class K17_08: # клас K17_08 def _ init _(self,a1,a2=10): # конструктор self.p1=a1 # змінні екз . класу р1 набуває значення параметра а1 self.p2=a2 # змінні екз . класу р2 набуває значення параметра а2 ob1=K17_08(“ принтер”,”Р10006”) # екземпляр класу ob1 з двома аргументами ob2= K17_08 (“Windows”) # екземпляр класу ob2 з одним аргументом print(ob1.p1, ob1.p2) # виведення значень змінних екз . класу ob1 print(ob2.p1, ob2.p2) # виведення значень змінних екз . класу ob2 01.12.2018 Конструктор класу в Python 13 Результат виконання програми принтер Р1006 Windows

Завдання для самостійного виконання:

Приклад 5. жеребкування ліги чемпіонату Європи Проводиться жеребкування ліги чемпіонату Європи серед 16 команд, які залежно від отриманого номера потрапляють в одну з чотирьох груп . Якщо команда отримує номер: менший 5, вона потрапляє в першу групу , якщо номер більший 4, але менший 9, то в другу групу , якщо номер більший 9, аде менший 13, то в третю групу , інакше – в четверту групу . 01.12.2018 Конструктор класу в Python 14

Завдання для самостійного виконання:

Програма реалізації результатів жеребкування для чотирьох команд class K17_09: # клас K17_09 def _ init _(self, a1, a2, a3): # конструктор self.p1=a1 # змінна екз . класу р1 набуває значення параметра а1 self.p2=a2 # змінна екз . класу р2 набуває значення параметра а2 self.func1(a3) # звернення до функції func1 з певного екземпляра класу def func1(self, a3): # функція func1 з двома параметрами if a3<=4: # якщо значення а3 менше 4 self.p3="- 1 група " # значення змінної p3 певного екз . класу if 4<a3<=8: # якщо значення 4<а3<=8 self.p3="- 2 група " # значення змінної p3 певного екз . класу if 8<a3<=12: # якщо значення 8<а3<=12 self.p3="- 3 група " # значення змінної p3 певного екз . класу else: # якщо значення а3 більше 12 self.p3=" 4 група " # значення змінної p3 певного екз . класу ob1 = K17_09(" Динамо","Київ",7) # екземпляр класу ob1 з 3 аргументами ob2 = K17_09(" Реал","Мадрид",3) # екземпляр класу ob2 з 3 аргументами ob3 = K17_09(" Баварія","Мюнхен",9) # екземпляр класу ob3 з 3 аргументами ob4 = K17_09(" Інтер","Мілан",5) # екземпляр класу ob4 з 3 аргументами print(ob1.p1, ob1.p2, ob1.p3) # виведення даних про Динамо print(ob2.p1, ob2.p2, ob2.p3) # виведення даних про Реал print(ob3.p1, ob3.p2, ob3.p3) # виведення даних про Баварію print(ob4.p1, ob4.p2, ob4.p3) # виведення даних про Інтер 01.12.2018 15

Завдання для самостійного виконання:

Аналіз та результат виконання програми Після запуску програми в процесі створення екземпляра ob1 класу K17_09 викликається конструктор, у результаті чого параметр self набуває значення екземпляра класу ob1, параметр а1 - значення Динамо, параметр а2 – значення Київ , параметр a3 — значення 7. Потім викликається функція func1 із параметром а3. У ній визначається , до якої групи потрапляє команда «Динамо» і назва цієї групи запам’ятовується у зміній p1 екземпляра класу ob1. Далі виконуються аналогічні дії для екземплярів класу ob1, ob2, ob3 i ob4. У результаті для кожного об'єкта буде виділено ділянки пам'яті , y яких будуть зберігатися значення змінних р1, p2 і р3. Наступними чотирма інструкціями значення змінних кожного екземпляра класу виводяться на екран . Результат виконання програми Динамо Київ – 2 група Реал Мадрид – 1 група Баварія Мюнхен – 3 група Інтер Мілан – 4 група 01.12.2018 Конструктор класу в Python 16

Завдання для самостійного виконання:

Запитання для перевірки знань 01.12.2018 Конструктор класу в Python 17

Завдання для самостійного виконання:

Завдання для самостійного виконання 01.12.2018 Конструктор класу в Python 18