Incrémentation des voitures créées dans une dataclass
Bonjour,
Comment faire pour recréer l'exemple avec les incrémentations des "voitures_crees" dans le cas où nous sommes dans une dataclasse? J'ai essayé de le faire pour le cours suivant sur les méthodes statiques, mais le nombre de voitures créées restent incrémentées à 1. Je ne sais pas où mettre l'incrémentation dans mon code pour que ça se fasse correctement.
Voici ce que j'avais essayé de faire initialement :
class Voiture :
marque: str
vitesse: int
prix: int
voiture_crees: ClassVar[int] = 0
voiture_crees: int = voiture_crees+1
Merci pour votre aide
Bonjour
Le problème viens du fait que ta deuxième variable "voiture_crees" n'incrémente le précédent que pour l'objet créé. Si bien qu'à chaque fois que tu créé un instance, il est remis à zéro puis incrémenter de 1.
Les dataclass n'ont pas de méthode init, mais tu peux contourner le problème en créant une méthode de classe post_init.
Voici un exemple de code qui produit l'effet recherché:
```python
from dataclasses import dataclass
from typing import ClassVar
@dataclass
class Voiture :
marque: str
vitesse: int
prix: int
voiture_crees: ClassVar[int] = 0
@classmethod
def __post_init__(cls):
cls.voiture_crees += 1
````
En tout état de cause pour ce gendre d'application je te recommande l'utilisation de classe "normale" plutôt qu'une dataclasse qui dans ce cas n'est pas forcémment très pertinent.
Est-ce que tu as compris cela? N'hésite pas si cela ne te sembles pas clair.
Stéphane
Bonsoir Stephane,
Oui j'ai bien compris, merci beaucoup pour ta réponse!
Bonne soirée,
Simon
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte