Zanurkuj w Pythonie/Klasa opakowująca UserDict: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
błąd w klasie: "self.update(dict)" zamieniono na poprawne odwołanie: self.data.update(dict)
Nie podano opisu zmian
Linia 9:
|5.9|Definicja klasy <code>UserDict</code>
|tekst=
<sourcesyntaxhighlight lang="python">class UserDict: #(1)
def __init__(self, dict=None): #(2)
self.data = {} #(3)
if dict is not None: self.data.update(dict) #(4) (5)</sourcesyntaxhighlight>
 
# Klasa <code>UserDict</code> nie dziedziczy nic z innych klas. Jednak nie patrzmy się na to, pamiętajmy, żeby zawsze dziedziczyć z <code>object</code> (lub innego wbudowanego typu), bo wtedy mamy dostęp do dodatkowych możliwości, które dają nam klasy w nowym stylu.
Linia 35:
|5.10|Standardowe metody klasy <code>UserDict</code>
|tekst=
<sourcesyntaxhighlight lang="python">def clear(self): self.data.clear() #(1)
def copy(self): #(2)
if self.__class__ is UserDict: #(3)
Linia 43:
def keys(self): return self.data.keys() #(5)
def items(self): return self.data.items()
def values(self): return self.data.values()</sourcesyntaxhighlight>
 
# <code>clear</code> jest normalną metodą klasy; jest dostępna publicznie i może być wołana przez kogokolwiek w dowolnej chwili. Zauważmy, że w <code>clear</code>, jak we wszystkich metodach klas, pierwszym argumentem jest <code>self</code>. (Pamiętajmy, że nie dodajemy <code>self</code>, gdy wywołujemy metodę; Python robi to za nas.) Zwróćmy uwagę na podstawową cechę tej klasy opakowującej: przechowuje ona prawdziwy słownik w atrybucie <code>data</code> i definiuje wszystkie metody wbudowanego słownika, a w każdej z tych metod zwraca wynik identyczny do odpowiedniej metody słownika. (Gdybyśmy zapomnieli, metoda słownika <code>clear</code> czyści cały słownik kasując jego wszystkie klucze i wartości.)