314
Rozdział 8.
Więcej z obiektami
Więcej działań z klasą CountFromBy
Przykładowe użycie klasy
CountFromBy
z końca poprzedniej strony pokazuje jej standardowe
zachowanie polegające na tym, że gdy wartości nie są jawnie określone, licznik reprezentowany
przez klasę zaczyna swoje działanie od wartości 0 i zwiększa ją zawsze o 1. Możliwe jest
także podanie alternatywnej wartości początkowej, tak jak zostało to pokazane w następnym
przykładzie zamieszczonym poniżej, w którym licznik zaczyna pracę od wartości 100.
>>> d = CountFromBy(100)
>>> d
100
>>> d.increase()
>>> d.increase()
>>> d.increase()
>>> d
103
>>> e = CountFromBy(100, 10)
>>> e
100
>>> for i in range(3):
e.increase()
>>> e
130
Wartość
początkowa
wynosi 100.
Wywołaj metodę increase,
aby zwiększyć wartość
licznika za każdym razem o 1.
Po trzech wywołaniach metody increase wartość
przechowywana przez obiekt d wynosi 103.
Tworząc kolejny nowy obiekt,
określ wartość początkową.
Oprócz wartości początkowej można też określić wartość, o którą zwiększany będzie
licznik, tak jak zostało to przedstawione poniżej, gdzie zaczęliśmy zliczanie od 100
i zwiększamy wartość o 10.
>>> f = CountFromBy(increment=15)
>>> f
0
>>> for j in range(3):
f.increase()
>>> f
45
Tu określamy zarówno wartość
początkową, jak i liczbę,
o którą należy zwiększyć
naszą wartość.
Wywołaj metodę increase trzykrotnie
w pętli for, za każdym razem
zwiększając wartość licznika o 10.
Wartość początkowa
obiektu przechowywanego
w zmiennej e wynosi 100,
a końcowa to 130.
W ostatnim z przedstawionych tu przykładów licznik zaczyna swoje działanie od
wartości 0 (będącej wartością domyślną), ale jest zwiększany o 15. Zamiast podawać
wartości
(0, 15)
jako argumenty klasy, skorzystaliśmy w tym miejscu ze słowa
kluczowego argumentu, które umożliwia nam określenie wartości, o jaką należy
zwiększyć licznik, pozostawiając jednak standardową wartość początkową (czyli 0).
Tu określamy liczbę,
o którą należy
zwiększyć naszą
wartość.
Tak jak
wcześniej,
wywołujemy
funkcję
increase
trzykrotnie.
Wartość początkowa
obiektu przechowywanego
w zmiennej f wynosi 0,
a końcowa to 45.
jesteś tutaj�
315
Trochę klasy
>>> c
3
>>> d
103
>>> e
130
>>> f
45
Te cztery obiekty klasy
CountFromBy mają własne
wartości atrybutów.
Fabryka
obiektów
Fabryka została wyposażona
w Twoją klasę CountFromBy
i jest gotowa do pracy.
Tutaj są Twoje utworzone obiekty,
które zawierają współdzielony kod
oraz swoje własne dane.
Obiekt d
Obiekt f
Obiekt e
Warto się powtarzać: obiekty współdzielą
zachowanie, ale nie stan
W poprzednich przykładach utworzyliśmy cztery nowe obiekty klasy
CountFromBy
:
c
,
d
,
e
oraz
f
, z których każdy ma dostęp do metody
increase
definiującej zachowanie
współdzielone przez wszystkie obiekty utworzone na podstawie tej klasy. Zawsze będzie
istniała tylko jedna kopia kodu tej metody, z której korzystać będą wszystkie te obiekty.
Każdy z nich posiada jednak własne wartości atrybutów. W naszym przykładzie jest to
wartość licznika, która jest inna dla każdego z obiektów.
Zachowanie klasy
jest współdzielone
przez każdy jej
obiekt, podczas
gdy stan nie jest
współdzielony.
Każdy obiekt
posiada własny stan.
Raz jeszcze powtórzymy tu tę kluczową kwestię: kod metody jest współdzielony,
ale dane atrybutów nie są.
O klasach można myśleć jako o „szablonach do wycinania ciastek”, które są
używane w fabryce do masowej produkcji obiektów zachowujących się w ten sam
sposób, ale przechowujących własne dane.
KOD DO
PONOWNEGO
UŻYCIA
KOD DO
PONOWNEGO
UŻYCIA
KOD DO
PONOWNEGO
UŻYCIA
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.