2. Àlbum amb preu (herència) (3 punts)

La classe album_base.AlbumBase que ja coneixeu (vegeu Àlbum_de_música) representa un àlbum de música format per peces musicals (pessa_musical.PeçaMusical). Està especificada a la pàgina Àlbum_de_música del material de l’assignatura. Descarregueu la seva implementació d’aquí (pessa_musical.py i album_base.py). La classe album_preu.AlbumPreu es deriva per herència de la classe album_base.AlbumBase i li afegeix informació sobre el preu de descàrrega de les peces de l’àlbum. Aquest preu és proporcional a la durada en segons de cada peça, independentment de la seva popularitat. Les peces curtes amb durada inferior a un determinat llindar són gratuïtes.

En el mòdul album_preu (fitxer album_preu.py) implementeu la classe AlbumPreu especificada a continuació:

class album_preu.AlbumPreu(titol, autor, nombre_peces, preu_segon)

Construeix un Àlbum amb informació del preu per segon de les peces.

Atributs (a més dels de la classe base)

preup

El preu en € per segon de durada de qualsevol peça de l’àlbum, inicialitzat amb el paràmetre preu_segon.

Mètodes (a més dels de la classe base)

cost_total(smin)

Retorna el preu en € del àlbum complet que es calcula com la suma dels segons de durada de cada peça multiplicat pel preu per segon de l’àlbum. Només les peces amb durada superior o igual a `smin` segons tenen un cost, les altres són gratuïtes. smin és un int.

Vegeu per exemple:

>>> a = AlbumPreu('El millor de ', 'John Smith', 12, 0.1)
>>> isinstance(a, AlbumBase) and isinstance(a, AlbumPreu)
True
>>> a.preup
0.1
>>> a[0] = PeçaMusical('P1', timedelta(seconds=55))
>>> a[1] = PeçaMusical('P2', timedelta(seconds=180))
>>> a.cost_total(1)
23.5
>>> a.cost_total(180)
18.0
>>> int(a.cost_total(181))
0

Disposeu del fitxer de tests tests-albumpreu.txt. No pugeu els fitxers pessa_musical.py ni albumbase.py a la tasca d’Atenea, només album_preu.py.