312
Rozdział 8.
Klasa tworzy obiekt
Tworzenie obiektów klas
Aby skorzystać z klasy, tworzy się jej obiekt (przykład tej operacji zobaczysz poniżej). Działanie to określa się mianem
tworzenia instancji obiektu
(ang. object instantiation). Gdy usłyszysz o tworzeniu instancji, pomyśl o wywoływaniu;
chodzi o to, że wywołujesz klasę, aby utworzyć obiekt.
Może Ci się to wydawać dość zaskakujące, ale możesz utworzyć klasę, która nie ma stanu ani zachowania, nadal
stanowi jednak pełnoprawną klasę w języku Python. Klasa taka jest
pusta. Zacznijmy nasze eksperymenty od pustej
klasy, którą będziemy rozbudowywać na kolejnych stronach tego rozdziału. Będziemy tu korzystać z wiersza poleceń
interpretera i zachęcamy Cię, abyś robił to samo.
Rozpoczniemy od utworzenia pustej klasy o nazwie
CountFromBy
. Najpierw umieścimy przed tą nazwą słowo
kluczowe
class
, a następnie podamy zestaw kodu, który implementuje klasę (po obowiązkowym znaku dwukropka).
>>> class CountFromBy:
pass
>>> a = CountFromBy()
>>> b = CountFromBy()
Te instrukcje bardzo przypominają
wywołania funkcji, nieprawdaż?
Definicje klas
rozpoczynają
się słowem
kluczowym class.
Tutaj znajduje się
zestaw klasy.
To jest nazwa klasy.
Nie zapomnij
o dwukropku.
Utwórz obiekt: dodaj do nazwy klasy nawias okrągły,
po czym całość przypisz do zmiennej.
Instrukcja pass jest prawidłowa
(tzn. jest syntaktycznie
poprawna), ale nie wykonuje
żadnej operacji. Traktuj ją jako
pustą instrukcję.
Zwróć uwagę na fakt, że przedstawiony powyżej zestaw klasy zawiera jedynie słowo kluczowe
pass
języka Python,
stanowiące pustą instrukcję (w tym sensie, że nie wykonuje ona żadnego działania). Słowa tego możesz używać wszędzie
tam, gdzie interpreter spodziewa się zastać faktyczny kod. W tym przypadku nie jesteśmy jeszcze gotowi podać szczegółów
klasy
CountFromBy
, dlatego skorzystaliśmy ze słowa kluczowego
pass
, aby uniknąć wystąpienia błędów składni, które
normalnie zostałyby zgłoszone, gdybyśmy spróbowali utworzyć klasę z zestawem całkowicie pozbawionym kodu.
Teraz, gdy nasza klasa już istnieje, utwórzmy jej dwa obiekty, z których jeden będzie się nazywał
a
, natomiast drugi —
b
.
Zauważ, że tworzenie obiektów klasy bardzo przypomina operację wywołania funkcji, co pokazano poniżej.
głupie pytania
Nie istnieją
1
Ściślej: jest to notacja UpperCamelCase (określana też jako PascalCase), ponieważ również pierwsze słowo nazwy pisane jest tu wielką literą
(nazwa w notacji camelCase zaczyna się małą literą) — przyp. tłum.
P
: Gdy patrzę w cudzy kod, skąd mam wiedzieć, czy coś takiego jak
CountFromBy()
stanowi instrukcję tworzenia
obiektu czy też wywołanie funkcji? Wygląda mi to raczej na wywołanie funkcji...
O
:
To świetne pytanie. Na pierwszy rzut oka rzeczywiście możesz nie wiedzieć. Wśród programistów Pythona funkcjonuje jednak ogólnie
przyjęta konwencja, zgodnie z którą w nazwach funkcji używa się małych liter (oraz znaków podkreślenia do rozdzielania poszczególnych
słów), podczas gdy notacja
CamelCase
1
(połączone ze sobą słowa, których pierwsze litery pisane są jako wielkie) wykorzystywana jest do
nazywania klas. Zgodnie z tą konwencją powinno być jasne, że count_from_by() to wywołanie funkcji, a CountFromBy() stanowi
instrukcję tworzenia obiektu. Wszystko jest w porządku, dopóki wszyscy trzymają się tej konwencji, co gorąco polecamy robić też Tobie.
Jeśli jednak zignorujesz tę sugestię, wszystko jest możliwe, a większość programistów Pythona będzie się z pewnością starała unikać
zarówno Ciebie, jak i Twojego kodu.
Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.