Zanurkuj w Pythonie/Metody specjalne: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Linia 77:
'comment': 'http://mp3.com/cynicproject'}
# Najpierw tworzysz instancję klasy <tt>MP3FileInfo</tt> pomijając nazwę pliku. (Możemy tak zrobić, ponieważ argument <tt>filename</tt> funkcji <tt>__init__</tt> jest opcjonalny.) Ponieważ <tt>MP3FileInfo</tt> nie posiada własnej metody <tt>__init__</tt>, Python idzie wyżej po drzewie przodków i znajduje
# Teraz rozpoczyna się prawdziwa zabawa. Ustawiając klucz <tt>"name"</tt> w <tt>mp3file</tt> powoduje wywołanie metody <tt>__setitem__</tt> klasy <tt>MP3FileInfo</tt> (nie <tt>UserDict</tt>), która zauważa, że ustawiamy klucz <tt>"name"</tt> z prawdziwą wartością i wywołuje <tt>self.__parse</tt>. Chociaż jeszcze nie śledziliśmy działania metody <tt>__parse</tt>, możemy po wyjściu zobaczyć, że ustawia ona kilka innych kluczy jak <tt>"album"</tt>, <tt>"artist"</tt>, <tt>"genre"</tt>, <tt>"title"</tt>, <tt>"year"</tt>, czy też <tt>"comment"</tt>.
# Zmieniając klucz <tt>"name"</tt> będziemy wykonywali ten sam proces podobnie. Python wywoła <tt>__setitem__</tt>, który następnie wywoła <tt>self.__parse</tt>, a ten ustawi wszystkie inne klucze.
|