Classes
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Alternativer Titel |
| |
Serientitel | ||
Anzahl der Teile | 10 | |
Autor | ||
Lizenz | CC-Namensnennung 3.0 Deutschland: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen. | |
Identifikatoren | 10.5446/63445 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache |
Inhaltliche Metadaten
Fachgebiet | |
Genre |
Fundamentals of Programming10 / 10
1
2
4
5
6
7
8
9
10
00:00
XMLComputeranimation
00:11
Klasse <Mathematik>FehlermeldungKategorie <Mathematik>Objekt <Kategorie>Attributierte GrammatikInstantiierungVersionsverwaltungElektronische PublikationProgrammierungVollständiger VerbandBimodulMailing-ListeZahlenbereichModallogikVererbungshierarchieVektorpotenzialNummernsystemDefaultParametersystemDifferenteCodeFunktionalMereologieZeichenketteStandardabweichungProjektive EbeneObjektorientierte ProgrammierspracheSoftwareAliasingMultiplikationsoperatorFunktion <Mathematik>UmwandlungsenthalpieKonfiguration <Informatik>InformationDateiformatGrenzschichtablösungBestimmtheitsmaßSelbst organisierendes SystemSchlussregelSystemaufrufBasis <Mathematik>PunktZahlensystemMathematikInteraktives FernsehenInformationsspeicherungMultiplikationVariableComputeranimation
Transkript: Ukrainisch(automatisch erzeugt)
00:11
Доброго дня, шановні злобовочі! Сьогодні ми поспілкуємося про класи. Об'єктно-арієнтоване програмування по праву вважається однією з найефективніших методологів створення програмних продуктів.
00:23
В об'єктно-арієнтованому програмуванні ви створюєте класи, що описують реально існуючі предмети та ситуації, а потім створюєте об'єкти на основі цих описів. При написанні класу визначається загальна повідінка цілої категорії об'єктів. Створення об'єкта на основі класу називається створенням екземпляра.
00:44
Таким чином ви працюєте з екземплярами класу. Наприклад, клас DOC. У кожному екземпляре, створеному на основі класу, буде зберігатися прізвисько name та вік age.
01:01
Крім того, в ньому будуть присутні методи seed та rollover. Загальноприйнятими угодами імена класу починається з великої літери. Круглі дужки у визначенні класу порожні, тому що клас створюється з нуля. Функція, що є частиною класу, називається методом.
01:23
Це, що ви дізналися раніше про функції, також стосується і методів. Єдина практична відмінність – спосіб виклику методів. Метод init автоматично виконується під час створення кожного нового екземпляру на базі класу. Ім'я методу починається і закінчується двома символами підчоркування.
01:45
Ця схема запопігає конфліктам імен стандартних методів у Python і методів ваших класів. Будьте уважні, два символи підкреслення повинні стояти на кожній стороні init. Якщо ви поставите лише один символ підкреслення з кожного боку, метод не буде викликатися автоматично при використанні класу,
02:08
що може призвести до появи підступних помилок. Метод init визначається з трьома параметрами self, name та age. Параметр self обов'язковий у визначенні методу.
02:22
Він має передувати всім іншим параметрам. Він повинен бути включений до визначення, тому що при майбутньому виклику методу init Python автоматично передає аргумент self. При кожному виклику методу, пов'язаному з класом, автоматично передається self.
02:42
Посилання на екземпляр. Цей параметр надасть конкретному екземпляру доступ до атрибутів та методів класу. Коли ви створюєте екземпляр, Python викликає метод init. Будь-яка змінна з префіксом self доступна для кожного методу в класі. І ви також зможете звертатися до цих зміних у кожному екземпляре,
03:04
створеному на основі класу. Змінні деяких ви звертаєтесь через екземпляри також називаються атрибутами. Вважайте, що клас – це свого роду інструкція зі створення екземплярів. Створимо екземпляр, який представляє конкретну собаку. Наприклад, MyDoc – присвоюємо.
03:22
Клас Doc – передамо параметри Willi та Schist. Willi – ім'я, Schist – вік. Тут не зайве згадати правила по запису імен. Зазвичай вважається, що ім'я, що починається з символу верхнього регістру – це клас.
03:40
А екземпляри класів починаються з маленької літери. Для звернення до атрибутів екземпляра використовується точковий запис. Наприклад, MyDoc.name, MyDoc.age. Також точковий запис використовується і при виклику методів.
04:01
MyDoc.sit На основі класу можна створити стільки екземплярів, скільки вам потрібно. Наприклад, в цьому коді ми створюємо MyDoc.yodoc. В наступному прикладі ми створюємо клас Car, де є три параметри та параметри з замовченням self.
04:24
Кожен атрибут класу повинен мати вихідне значення, навіть якщо воно дорівнює нулю або порожній рядок. У деяких випадках, наприклад, при заданні значень за умовченням, це вихідне значення є сенс задавати в тілі методу.
04:40
І ні. У такому разі передавати параметр для цього атрибуту під час створення об'єкта не обов'язково. Значення атрибута можна змінити одним із трьох способів. Змінити його прямо в екземплярі, задати значення за допомогою методу або змінити його зі збільшенням,
05:00
тобто додаванням певної величини за допомогою методу. Щоб змінити значення атрибута, найпростіше звернутися до нього прямо через примірник, тобто вказати ім'я екземпляру до ім'я атрибуту та присвоїти нове значення. До класу можна включити методи, які змінюють деякі атрибути за вас.
05:21
Замість змінювати атрибут безпосередньо, ви передаєте нове значення методу, який бере оновлення атрибута на себе. В цьому прикладі dev update addometer – це є та функція, тобто метод, який для цього призначений. Іноді значення атрибута потрібно змінити і заданим збільшенням.
05:41
Замість присвоювати атрибуту довільне нове значення. Работа над новим класом має починатися з нуля. Якщо клас, який ви пишете є спеціалізованою версією раніше написаного класу, ви можете скористатися успадкуванням. Один клас на наступний від іншого.
06:01
Автоматично отримує всі атрибути та методи першого класу. Вихідний клас називається «батьком», а новий клас – «нащадком». Клас «нащадок» успадковує атрибути та методи «батька», але при цьому також може визначати власні атрибути та методи. При написанні нового класу на базі існуючого класу,
06:22
часто доводиться викликати метод init – класу «батька». При цьому відбувається ініціалізація будь-яких атрибутів, визначених у методи init – «батька». І ці атрибути стають доступними для класу «нащадка». При створенні класу «нащадок» клас «батька» має бути частиною поточного файлу,
06:45
яке визначення має передувати визначенню класа «нащадка» у файлі. У визначенні «нащадка» ім'я класу «батька» полягає у круглі дужки. Ім'я «супер» походить з поширеної термінології. Клас «батька» називається «супер» класом, а клас «нащадок» – під класом.
07:03
Після створення класу «нащадка», що успадковує від класу «батька», можна переходити до додавання нових атрибутів та методів, необхідних для того, щоб «нащадок» відрізнявся від «батька». Можливості спеціалізації класу безмежні. Ви можете додавати скільки завгодно атрибутів та методів.
07:23
Будь-який метод батьківського класу, який у ситуації, що моделюється, робить не те, що потрібно, можна перевизначити. Для цього в класі «нащадці» визначається метод із таким самим ім'ям, що й у методу класу «батька».
07:41
Пайтон ігнорує метод «батька» та звертає увагу лише на метод, визначений у «нащадку». При моделуванні явищ реального світу в програмах класи нерідко доповнюється деталями більшою кількістю підробиць. Списки атрибутів та методів зростають, і через якийсь час файли стають довгими та громісткими.
08:03
У такій ситуації частину одного класу нерідко можна записати у вигляді окремого класу. Великий код розбивається не менше класи, які працюють у займодії один з одним. Наприклад, як тут ми виокремили клас «Battery» із класу «Electric Car».
08:27
З додаванням нової функціональностю до класів файли можуть стати надто довгими, навіть при правильному використанні наслідування. Відповідно до загальної філософії Пайтон, файли не повинні захаращуватися займими підробицями.
08:43
Для цього Пайтон дозволяє зберігати класи у модулях та імпортувати потрібні класи в основну програму. Якщо ви розробляєте модуль, завжди пишіть якісь коментарі. Для того, щоб через певний час ви могли зрозуміти, для чого конкретно ці класи,
09:04
для чого ці методи у цих класах, для чого ці парамети. В одному модулі можна зберігати скільки завгодно класів. Хоча всі ці класи повинні бути пов'язані один з одним. У прикладі зберігається три класи – car, battery, electric car.
09:29
У файлах програми можна імпортувати стільки класів, скільки потрібно. Щоб імпортувати кілька класів із модуля, розділіть їх імена комами. Наприклад, ви вказуєте, з якого файлу імпортуєте який клас.
09:49
Також можна імпортувати весь модуль, а потім звертатися до потрібних класів з використанням точкового запису. Цей спосіб простий, а отриманий код читається легко,
10:02
оскільки кожен виклик, що створює екземпляр класу, включає ім'я модуля. У програмі не буде конфліктів з іменами, що використовуються у поточному файлі. Для цього потрібно просто написати «IMPORT» і з якого файлу ви імпортуєте.
10:22
Якщо ви бажаєте імпортувати всі класи із модуля, необхідно використати наступний формат. Ви вкажете «FROM» назву файла, імпорт, зірочка, ви імпортуєте всі класи.
10:44
Використовувати цей спосіб не рекомендується з двох причин. Насамперед буває корисно прочитати команди «IMPORT» на початку файлу і отримати чітке представлення у тому, які класи використовуються у програмі. А за такого підходу не ясно, які класи з модуля потрібні програми.
11:05
Також можливі конфлікти з іменами у файлі. Якщо ви випадково імпортуєте клас з ім'ям, що вже є у файлі, у програмі можуть виникнути підступні помилки. Отже, якщо вам потрібно імпортувати велику кількість класів із модуля,
11:21
краще імпортувати весь модуль та скористатися синтаксисом. Хоча ви не бачите перелік всіх класів, що використовуються на початку файлу, принаймні ясно видно, де модуль використовується в програмі. Також запобігає потенційним конфліктом імен,
11:43
які можуть виникнути при імпортуванні кожного класу в модулі. Іноді класи доводиться розподіляти за кількома модулями, щоб уникнути надмірного зростання одного файлу та зберігання незв'язних класів в одному модулі. При зберіганні класів у кількох модулях може бути,
12:01
що один клас з одного модуля залежить від класу з іншого модуля. У таких випадках потрібний клас можна імпортувати до першого модуля. Псевдоніми дуже корисні для використання модулів для організації кодопроєктів. Псевдоніми також можуть використовуватися і при імпортуванні класів.
12:21
Наприклад, при імпортуванні з файлу car методу electric car ми можемо його розпізнавати через псевдонім ec і потім звертатися не до electric car, а до псевдонім ec.
12:42
Завдання для саморозвитку. Створіть модуль з двома класами – батьком та нащадком. Де у вас буде перший клас – це тварини, другий клас – це домашні тварини. Вигадайте декілька методів для виваду інформації та оброблення,
13:02
а саме накопичування віку. Дякую за увагу. На все добре. До наступних зустрічей.
Empfehlungen
Serie mit 29 Medien