Exercices POO Attribut de classe
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Attribut de classe

Jusqu'ici, on a vu des attributs d'instance (propres a chaque objet, definis avec self.attribut). Mais il existe aussi des attributs de classe : ils sont partages par toutes les instances.

Un attribut de classe se definit directement dans le corps de la classe, en dehors de toute méthode :

class Personne:
nombre_instances = 0

def __init__(self, nom):
Personne.nombre_instances += 1
self.nom = nom

p1 = Personne('Alice')
p2 = Personne('Bob')
Personne.nombre_instances vaut 2

Attention : on accede a l'attribut de classe via le nom de la classe (Personne.nombre_instances), pas via self. Sinon on risque de créer un attribut d'instance qui masque l'attribut de classe.

Crée une classe Article avec un attribut de classe tva_taux qui vaut 0.20 (20%). Le __init__ prend un nom et un prix_ht. Ajoute une méthode prix_ttc() qui renvoie le prix TTC (prix_ht * (1 + tva_taux)).

Exemple :
a = Article('Stylo', 10)
a.prix_ttc() renvoie 12.0
Article.tva_taux = 0.055
a.prix_ttc() renvoie 10.55

Tests (3/4)

Prix TTC 20%
Article.tva_taux = 0.20
a = Article('Stylo', 10)
assert a.prix_ttc() == 12.0
Prix TTC 5.5%
Article.tva_taux = 0.055
a = Article('Pain', 1.0)
assert abs(a.prix_ttc() - 1.055) < 0.001
Attribut existe
assert hasattr(Article, 'tva_taux')

+ 0 tests cachés

Indices (3 disponibles)

solution.py