SAMOUCZEK JĘZYKA PYTHON ROZDZIAŁY   
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 6: Obiekty metod


Metodę wywołuje się w następujący sposób:

x.f()

w naszym przykładzie zwróci ona napis "witaj swiecie". Nie jest jednakże konieczne wywoływać metodę w ten bezpośredni sposób: x.f jest obiektem i można go zachować i wywołać później, np.:

xf = x.f
while 1:
    print xf()

będzie przez cały czasy drukować " witaj swiecie".
Co właściwie dzieje się, gdy wywoływana jest metoda? Można było zauważyć, że x.f() została wywołana bez argumentu, pomimo że definicja funkcji f zawiera jeden argument formalny self. Pewne jest, że Python zgłosi wyjątek, gdy funkcja, która wymaga podania argumentów, wywoływana jest bez nich -- nawet, jeżeli żaden z nich nie jest wewnątrz jej używany...

Jedną ze szczególnych cech metody jest to, że obiekt, na rzecz którego jest wywoływana, przekazywany jest jako pierwszy argument funkcji. W naszym przykładzie, wywołanie x.f() odpowiada dokładnie wywołaniu MyClass.f(x). Ogólnie rzecz biorąc, wywołanie metody z listą n argumentów równoznaczne jest wywołaniem odpowiedniej funkcji klasy z lista argumentów stworzoną poprzez włożenie obiektu konkretu klasy przed pierwszy element (argument wywołania) listy argumentów.

Jeżeli chcemmy zrozumieć działanie metod, musimy spróbować spojrzeć na ich implementację. Gdy używa się odniesienia do atrybutu konkretu klasy, który nie jest atrybutem danych, następuje przeszukanie klasy konkretu. Jeżeli znaleziono nazwę w klasie, która odnosi się do funkcji w niej zdefiniowanej, tworzony jest obiekt metody jako paczka zawierająca odniesienia do obiektu konkretu klasy i obiektu funkcji klasy. Kiedy obiekt metody jest wywoływany z listą argumentów, następuje jego rozpakowanie, tworzona jest nowa lista argumentów z obiektu konkretu klasy i oryginalnej listy argumentów, a następnie obiekt funkcji wywoływany jest z nowo utworzoną listą.

Strona główna - O Pythonie - Interpreter - Samouczek - Przykłady programów - Linki