Disseny d’una classe contenidora

  • Conté molts elements d’un mateix tipus (o no, si és una classe genèrica).

  • Diverses classe predefinides de python són contenidores: str, list, tuple, dict.

  • Té algun atribut on emmagatzema els elements. Sovint és privat.

  • Solen tenir accés per índex i ser iterables.

Mètodes especials

Mètode especial

Crida a

Significat

__getitem__(self, i)

obj[i]

Consulta un element per índex

__setitem__(self, i, v)

obj[i] = v

Assigna un valor a un element d’un índex

__len__(self)

len(obj)

Consulta el nombre d’elements

__contains__(self, v)

v in obj

Consulta si un element pertany a l’objecte

__iter__(self)

Permet iterar sobre els elements

Exemple: Classe VectorNDim

Classe iterable

  • Permet utilitzar la iteració for var in obj.

  • Per defecte, si té el mètode __getitem__ definit, ja és iterable sobre els índexos 0, 1, 2, … fins que __getitem__ provoca algun error. Per exemple, la classe vectors_ndim.VectorNdim.

  • … o bé té el mètode __iter__ definit, que és un generador o retorna un iterador. Per exemple, la classe feixos.Feix.