Українська
Ідентичність і проєктування класу
Ідентичність, рівність і життєвий цикл
Два окремо створені екземпляри звичайного класу за замовчуванням не стають рівними лише тому, що їх поля однакові. is перевіряє ідентичність, а зміст == може бути визначений спеціальним методом у темі 10. Присвоєння other = obj не копіює об’єкт: обидва імені посилаються на один стан.
py
class Label:
def __init__(self, text: str) -> None:
self.text = text
a = Label("A")
b = Label("A")
c = a
print(a == b, a is b, a is c)
c.text = "B"
print(a.text, b.text)False False True
B Adel a видаляє зв’язок імені, а не наказує негайно знищити об’єкт, якщо на нього ще є посилання. Збирання сміття звільняє недосяжні об’єкти, але час фіналізації не є універсальною гарантією мови. Не використовуйте __del__ як основний спосіб закриття файла або підтвердження операції. Для ресурсів потрібне явне керування, зокрема контекстний менеджер with.
Проєктування та робота в PyCharm
Починайте з відповідальності класу: яку сутність він представляє, які стани допустимі та які операції може виконувати клієнт. Уникайте класу, що одночасно читає клавіатуру, рахує тариф, малює таблицю й зберігає файл. Модель повертає дані; інтерфейс вирішує спосіб введення й показу. Це дозволяє перевіряти модель без запуску меню та повторно використати її в іншому застосунку.
У PyCharm Structure (Alt+7) показує класи, методи й властивості, File Structure (Ctrl+F12) дозволяє швидко перейти до члена. Меню Generate (Alt+Insert) залежить від контексту; перевіряйте фактичні Python-дії, а не очікуйте пункти з Java чи C#. Довідка: https://www.jetbrains.com/help/pycharm/generating-code.html.
Знімок екрана
BankAccount editor; Alt+7; show methods, property and fields.
Рис. 8.5. Члени класу у вікні Structure
Підтримка UML у PyCharm залежить від доступних можливостей і компонентів встановленого продукту. Перевірте наявність Diagrams → Show Diagram у контекстному меню. Відсутність меню не перешкоджає виконанню роботи: UML можна побудувати вручну за тими самими правилами. Офіційна інструкція: https://www.jetbrains.com/help/pycharm/class-diagram.html.
Знімок екрана
Pause after cart.add; expand cart, items, Product and mangled discount field.
Рис. 8.6. Стан кошика в налагоджувачі
Типові помилки – забутий self, спільний список у класі, нескінченний виклик сеттера, часткова зміна стану до перевірки, дублювання похідного значення в двох полях. Для кожного методу перевірте звичайний випадок, межу та відмову. Після відмови порівняйте стан із попереднім; самого тексту винятку недостатньо. Для двох екземплярів перевірте незалежність їхніх колекцій.