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

Usunięta treść Dodana treść
Diodac (dyskusja | edycje)
Linia 40:
<code>__setitem__</code> jest metodą specjalną, ponieważ Python wywołuje ją za nas, ale ciągle jest metodą klasy. Kiedy definiujemy klasy, możemy definiować pewne metody, nawet jeśli nadklasa ma już zdefiniowaną tę metodą. W ten sposób nadpisujemy (ang. ''override'') metody nadklas. Tyczy się to także metod specjalnych.
 
Koncepcja ta jest bazą całego szkieletu, który analizujemy w tym rozdziale. Każdy typ plików może posiadać własną klasę obsługi, która wie, w jaki sposób pobrać metadane z konkretnego typu plików. Natychmiast po poznaniu niektórych atrybutów (jak nazwa pliku i położenie), klasa obsługi będzie wiedziała, jak pobrać dalsze metaatrybuty automatycznie. Możemy to zrobić poprzez nadpisanie metody <code>__setitem__</code>, w której sprawdzamy poszczególnychposzczególne kluczyklucze i jeśli dany klucz zostanie znaleziony, wykonujemy dodatkowe operacje.
 
Na przykład <code>MP3FileInfo</code> jest podklasą <code>FileInfo</code>. Kiedy w <code>MP3FileInfo</code> ustawiamy klucz <code>"plik"</code>, nie tylko ustawiamy wartość samego klucza <code>"plik"</code> (jak to robi słownik), lecz także zaglądamy do samego pliku, odczytujemy tagi MP3 i tworzymy pełny zbiór kluczy. Poniższy przykład pokazuje, w jaki sposób to działa.