Ce face UserDict, UserList și UserString
Când moștenești direct dict sau list, unele metode încorporate (update, get, constructorul) nu apelează metodele tale suprascrise, ceea ce produce surprize. UserDict, UserList și UserString sunt scrise în Python și apelează consecvent metodele tale.
Datele propriu-zise sunt în atributul data (un dict, o list sau un str).
Parametri
| Parametru | Descriere |
|---|---|
dict / initlist / seq |
Datele inițiale. |
Ce returnează
Un obiect de tipul respectiv.
Exemple
Exemplul 1: Dicționar cu chei mereu cu litere mici
from collections import UserDict, UserList, UserString
class DictMinuscule(UserDict):
def __setitem__(self, cheie, valoare):
super().__setitem__(cheie.lower(), valoare)
d = DictMinuscule({"Nume": "Ana"})
d.update(ORAS="Iași")
print(d, d.data)
class ListaPozitiva(UserList):
def append(self, x):
if x < 0:
raise ValueError("doar valori pozitive")
super().append(x)
l = ListaPozitiva([1, 2])
l.append(3)
print(l)
print(UserString("text").upper())
Rezultat
{'nume': 'Ana', 'oras': 'Iași'} {'nume': 'Ana', 'oras': 'Iași'}
[1, 2, 3]
TEXT
Greșeli frecvente
- Moștenești
dictși suprascrii__setitem__, apoi te miri căupdate()saudict(...)îl ocolesc. FoloseșteUserDict.
Comenzi înrudite
class: Definește o clasă: un șablon pentru obiecte care au date (atribute) și comportament (metode).dict (dicționare): Dicționarul păstrează perechi cheie: valoare și găsește rapid valoarea după cheie.super(): Apelează metoda clasei părinte dintr-o clasă care o moștenește.