Rozdział 14 · Tworzenie rzeczywistych obiektów

Podsumowanie rozdziału

Od pierwszego obiektu do modeli z wielu współpracujących klas. Łączenie wszystkiego.

Zestaw narzędzi OOP, który teraz masz

Podsumowanie Rozdziału 14
Podstawy
class, __init__, self
atrybuty i metody
instancja vs klasie (14.7)
Enkapsulacja
_internal, __name
property i @x.setter
Relacje obiektowe
kompozycja — HAS-A (14.13)
dziedziczenie – IS-A (14.15)
super() (14.16)
Elastyczność zachowań
polimorfizm (14.18)
duck typing (14.19)
Współczesne Python
Metody specjalne (14.21)
@dataclass (14.23)
Projekt
zajęcia czy nie? (14.25)

Ścieżka, którą przeszliśmy

Obiekt = Stan + Zachowanie
Klasa opisuje przyszłe obiekty
__init__ dostosowuje stan
self kojarzy metodę z obiektem
Relacje między obiektami
Skład: Obiekt PRZECHOWUJE obiekt
Dziedziczenie: Obiekt JEST obiektem
Elastyczność zachowań
Polimorfizm
Duck typing
Od pojedynczego obiektu do modeli z wielu współpracujących klas

Czego nauczyliśmy się w tym rozdziale

  • OOP organizuje kod wokół obiektów są stanami i zachowaniami połączonymi razem.
  • class definiuje rysunek; __init__ dostosowuje stan już istniejącego obiektu, zamiast go tworzyć.
  • self — nie słowo kluczowe, a obiekt po lewej od kropki, podstawiony automatycznie podczas wiązania metody.
  • Atrybut instancji jest inny dla każdego obiektu; atrybut klasy jest taki sam dla wszystkich, a wartości, które można tam zmienić, są niebezpieczne.
  • Encapsulation i property chronią państwo bez zmiany składni z zewnątrz.
  • Kompozycja (HAS-A) i dziedziczenie (IS-A) to dwa różne sposoby relacji klas; wybór między nimi zależy od rzeczywistej relacji pojęć, a nie od wygody.
  • Polimorfizm i duck typing pozwalają kodowi działać z różnymi obiektami w ten sam sposób, bez jawnego sprawdzania ich klasy.
  • Specjalne metody łączą obiekt z print(), ==, len() oraz innymi wbudowanymi operacjami; @dataclass usuwa kod szablonowy tam, gdzie nie jest potrzebny.
  • Nie każde zadanie wymaga klasy — to też część projektowania, a nie wyjątek reguł.
Następny rozdział 15: Python i akta
Wszystkie obiekty w tym rozdziale żyły tylko tak długo, jak program działał: zamykały Python — i Player, i Korzina zniknęły wraz z procesem. W następnym rozdziale nauczymy się, jak zapisywać dane na dysku — pliki tekstowe i CSV pliki — aby stan przetrwał restart programu, a nie był tracony za każdym razem.