Soit la classe suivante :
class Joueur:
liste_joueurs = []
def __init__(self):
Joueur.liste_joueurs.append(self)
self.nbr_joueurs = len(Joueur.liste_joueurs)
J'aimerais que l'attribut nbr_joueurs soit modifié pour chaque objet de type Joueur à chaque fois que j'en instancie un. Pour les besoins de mon programme, cet attribut ne peut pas être statique.
Exemple :
>>> a, b, c = Joueur(), Joueur(), Joueur()
>>> a.nbr_joueurs
Retourne 1 alors que je voudrais 3.
J'ai essayé :
>>> a, b, c = Joueur(), Joueur(), Joueur()
>>> a, b, c = Joueur(), Joueur(), Joueur()
>>> a.nbr_joueurs
Mais logiquement ça retourne 4.
On pourrait modifier init comme il suit :
def __init__(self):
if self not in Joueur.liste_joueurs:
Joueur.liste_joueurs.append(self)
self.nbr_joueurs = len(Joueur.liste_joueurs)
Mais ça ne supprime pas le besoin de lancer deux fois la méthode init de chaque objet.