Définir une classe CompteBancaire.
Les attributs :
- le nom du propriétaire
- le solde
Les méthodes :
- deposer, méthode permettant de déposer une certaine somme.
- retirer, méthode permettant le retrait d'une somme donnée.
- afficher, méthode permettant d'afficher le nom et le solde.
- Un code possible
- Le nombre de comptes créés
- Le nombre de comptes existant
class CompteBancaire:
def __init__(self, nom_proprio, valeur):
self.nom = nom_proprio
self.solde = valeur
self.rouge = False if valeur >= 0 else True
def retirer(self, montant):
if montant > 0:
self.solde -= montant
if self.solde < 0 : self.rouge = True
def deposer(self, montant):
if montant > 0:
self.solde += montant
if self.solde >= 0 : self.rouge = False
def afficher(self):
ch = "\nCompte de {}.\n".format(self.nom)
ch += "Solde : {} euros.".format(self.solde)
if self.rouge:
ch += "\nAttention, vous êtes dans le rouge."
print(ch)
c = CompteBancaire("Marcel", 300)
c.afficher()
c.retirer(500)
c.afficher()
c.deposer(2000)
c.afficher()
Si on veut connaître de façon automatique le nombre d'objets créés, on utilisera un attribut de classe (un attribut qui ne sera donc pas un attribut d'instance, mais un attribut commun à toutes les instances).
Un code possible:
class CompteBancaire:
nombreDeComptes = 0
def __init__(self, nom_proprio, valeur):
self.nom = nom_proprio
self.solde = valeur
self.rouge = False if valeur >= 0 else True
CompteBancaire.nombreDeComptes += 1
a = CompteBancaire("Marcellle", 300)
b = CompteBancaire("Gislen", 120)
c = CompteBancaire("Gaspard", 12000)
print(CompteBancaire.nombreDeComptes)
On obtient l'affichage:
3
Avec le code donné précédemment pour dénombrer les comptes créés, un problème se pose si l'on cherche à détruire un compte. Exemple :
class CompteBancaire:
nombreDeComptes = 0
def __init__(self, nom_proprio, valeur):
self.nom = nom_proprio
self.solde = valeur
self.rouge = False if valeur >= 0 else True
CompteBancaire.nombreDeComptes += 1
a = CompteBancaire("Marcellle", 300)
b = CompteBancaire("Gislen", 120)
c = CompteBancaire("Gaspard", 12000)
print(CompteBancaire.nombreDeComptes)
del(a)
print(CompteBancaire.nombreDeComptes)
On obtient l'affichage:
3 3
Le nombre de comptes est resté le même après destruction de l'objet a.
Pour mettre à jour le nombre de comptes, il faut surcharger le destructeur d'instance:
class CompteBancaire:
nombreDeComptes = 0
def __init__(self, nom_proprio, valeur):
self.nom = nom_proprio
self.solde = valeur
self.rouge = False if valeur >= 0 else True
CompteBancaire.nombreDeComptes += 1
def __del__(self):
CompteBancaire.nombreDeComptes -= 1
a = CompteBancaire("Marcellle", 300)
b = CompteBancaire("Gislen", 120)
c = CompteBancaire("Gaspard", 12000)
print(CompteBancaire.nombreDeComptes)
del(a)
print(CompteBancaire.nombreDeComptes)
On obtient l'affichage:
3 2