Résolue

Incrémentation des voitures créées dans une dataclass

# Méthodes # Python # Classes

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 !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.