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

Usunięta treść Dodana treść
Poprawienie literówki
Nie podano opisu zmian
Linia 41:
<tt>__setitem__</tt> jest metodą specjalną, ponieważ Python wywołuje ją za Ciebie, ale ciągle jest metodą klasy. Tak łatwo, jak zdefiniowałeś ją w klasie <tt>UserDict</tt>, możesz ją przedefiniować w klasach pochodnych i zasłonić metodę klasy podstawowej. To pozwala Ci definiować klasy, które czasami zachowują się jak zwykły słownik ale potrafią coś więcej.
 
Koncepcja ta jest prostotą całego szkieletu, który analizujemy w tym rozdziale. Każdy plik może posiadać własną klasę obsługi, która wie, w jaki sposób pobrać dane z różnych typów plików. Natychmiast po pobraniu niektórych atrybutów (jak nazwa pliku i lokacja), które znamy, klasa obsługi będzie wiedziała, jak otrzymać dalsze atrybuty automatycznie. Możemy to zrobić poprzez nadpisanie metody <tt>__setitem__</tt> method, sprawdzenie poszczególnych kluczy i wykonywanie dodatkowych operacji, jeśli dany klucz zostanie znaleziony.
 
Na przykład <tt>MP3FileInfo</tt> jest potomkiem <tt>FileInfo</tt>. Kiedy w <tt>MP3FileInfo</tt> ustawiamy klucz <tt>"name"</tt>, nie tylko ustawiamy sam klucz <tt>"name"</tt> (jak to robi jego przodek <tt>FileInfo</tt>), lecz także patrzymy do samego pliku na tagi MP3 i dodajemy pełny zbiór kluczy. Poniższy przykład pokazuje, w jaki sposób to działa.