Zanurkuj w Pythonie/Metody specjalne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Diodac (dyskusja | edycje)
Derbeth (dyskusja | edycje)
m brakujące zamknięcia znaczników
Linia 56:
# Dodatkowe operacje dla klucza <tt>"plik"</tt> zawarte są w metodzie <code>__parse</code>. Jest to inna metoda klasy <code>MP3FileInfo</code>. Kiedy wywołujemy metodę <code>__parse</code> używamy zmiennej <code>self</code>. Gdybyśmy wywołali samo <code>__parse</code>, odnieślibyśmy się do normalnej funkcji, która jest zdefiniowana poza klasą, a tego nie chcemy wykonać. Kiedy natomiast wywołamy <code>self.__parse</code> będziemy odnosić się do metody znajdującej się wewnątrz klasy. Nie jest to niczym nowym. W identyczny sposób odnosimy się do [[../Klasa opakowująca UserDict|atrybutów obiektu]].
# Po wykonaniu tej dodatkowej operacji, chcemy wykonać metodę nadklasy. Pamiętajmy, że Python nigdy nie zrobi tego za nas; musimy zrobić to ręcznie. Zwróćmy uwagę na to, że odwołujemy się do bezpośredniej nadklasy, czyli do <code>FileInfo</code>, chociaż on nie posiada żadnej metody o nazwie <code>__setitem__</code>. Jednak wszystko jest w porządku, ponieważ Python będzie wędrował po drzewie przodków jeszcze wyżej dopóki nie znajdzie klasy, która posiada metodę, którą wywołujemy. Tak więc ta linia kodu znajdzie i wywoła metodę <code>__setitem__</code>, która jest zdefiniowana w samej wbudowanej klasie słownika, w klasie <code>dict</code>.
}}
 
{{Infobox|
Linia 62 ⟶ 63:
 
{{Python/Przykład
|5.15|Ustawianie klucza <code>"plik"</ttcode> w <code>MP3FileInfo</code>
|tekst=
>>> import fileinfo
Linia 84 ⟶ 85:
}}
 
<noinclude>{{Nawigacja|Zanurkuj w Pythonie|
{{Nawigacja|Zanurkuj w Pythonie|
[[../Klasa opakowująca UserDict|Klasa opakowująca <code>UserDict</code>]]|
[[../Zaawansowane metody specjalne/]]|
}}
{{Podświetl|py}}</noinclude>
</noinclude>