|
Rozdział 8: Klasy
1: Terminologia- 2: Przestrzenie i zasięgi nazw w Pythonie- 3: Składnia definicji klasy
- 4: Obiekty klasy 5: Obiekty konkretu klasy- 6: Obiekty metod- 7: Luźne uwagi
- 8: Dziedziczenie- 9: Dziedziczenie wielorakie 10: Zmienne prywatne- 11: Sztuczki i chwyty
- 12: Wjątki mogą być klasami
Lekcja 5: Obiekty konkretu klasy
Co można zrobić z obiektem konkretu klasy? Jedyna operacją zrozumiałą dla obiektu konkretu klasy jest odniesienie do jego atrybutów. Istnieją dwa rodzaje prawidłowych nazw atrybutów takiego obiektu.
- Pierwszy z nich nazywany jest atrybutami danych.
Są to odpowiedniki «danych składowych» w C++. Atrybuty danych nie muszą być deklarowane. Podobnie jak zmienne lokalne, są one tworzone w momencie pierwszego przypisania wartości do nich. Jeżeli x jest na przykład konkretem klasy MojaKlasa, to poniższy fragment kodu spowoduje wydrukowanie wartości 16 bez powstania komunikatu o błędzie:
>>>x.licznik = 1
>>>while x.licznik < 10:
... x.licznik = x.licznik * 2
...
>>>print x.licznik
16
>>>del x.licznik
- Drugim rodzajem odniesienia do atrybutu są metody.
Metoda jest funkcją, która "należy" do obiektu konkretu klasy. (W Pythonie, określenie «metoda» nie przynależy tylko i wyłącznie do konkretów klasy: inne typy obiektowe też mogą mieć metody, np. listy mają metody o nazwie append, insert, remove, sort, itd. Jednakże, określenie «metoda» użyte poniżej, odnosi się do funkcji należącej do instancji klasy, chyba, że zaznaczono inaczej.)
Poprawna nazwa metody obiektu konkretu zależy od jego klasy. Z definicji, wszystkie atrybuty klasy, które są funkcjami (zdefiniowanymi przez użytkownika), są poprawnymi nazwami metod konkretu tej klasy. Tak więc, w naszym przykładzie x.f jest funkcją, ale x.i już nie, ponieważ MojaKlasa.i nie jest funkcją. x.f nie jest tym samym co MyClass.f - jest to obiekt metody, a nie obiekt funkcji.
|
|