0
votes

Dataclass est-il un bon ajustement pour remplacer un dictionnaire?

J'utilise beaucoup de dictionnaires comme structure de données dans mon code. Au lieu de retourner plusieurs valeur que tuple comme Python le permet: xxx

Je préfère utiliser un dictionnaire avec l'avantage d'avoir nommé des touches nommées. Mais avec un dictionnaire imbriqué complexe, il est difficile de naviguer à l'intérieur. Quand j'avais codé avec JS il y a plusieurs années, j'ai aimé le dictionnaire aussi parce que je pouvais appeler sous-partie comme chose.stuff.foo et l'IDE m'a aidé à la structure.

I Découvrez le nouveau DataClass dans Python et je ne suis pas sûr de la raison de cela, sauf pour remplacer un dictionnaire? Pour ce que j'ai lu un dataclass ne peut avoir la fonction à l'intérieur et que l'initialisation de ses arguments est simplifiée.

J'aimerais avoir des commentaires à ce sujet, comment utilisez-vous un Dataclass ou sur Dictionnaire à Python.


0 commentaires

3 Réponses :


1
votes

mon prise sur elle.

A Dataclass n'est-il pas pour remplacer nécessairement un dictionnaire. Il est plutôt utilisé comme objet pour contenir des données où il est logique dans la modélisation d'une application.

Disons que nous construisons un simple carnet d'adresses. En supposant qu'il est juste de stocker certaines données, le Personne peut être un DataClass avec des champs comme name , phone_number , etc. On peut alors utiliser un Dictionnaire pour créer une recherche de nom à personne tel que nous pouvons récupérer cette classe de données par nom. xxx

puis ailleurs dans l'application: xxx

C'est un exemple rudimentaire, mais j'espère que cela obtient l'idée.

Bien sûr, on pourrait discuter pourquoi utiliser DataClass lorsqu'un nomméTuple suffirait?

D'autres ont écrit sur ce sujet:


0 commentaires

1
votes

Allez pour cela, est pur OO, c'est bien d'avoir des classes de données pures, surtout si vous traitez de multi-threading. Néanmoins, mon conseil est d'essayer d'insérer cette information uniquement si nécessaire et utilisée (mélangeant la classe de données avec des fonctionnalités).


1 commentaires

Je travaille avec des données, donc je suis plus dans la programmation fonctionnelle. J'utilise à peine OO (classe, héritage ...) Mais pouvez-vous me dire plus sur plusieurs threading que vous avez souligné.



4
votes

Les dataclasses sont plus de remplacement pour NamedTeuples, puis des dictionnaires.

tandis que NamedTeuples sont conçus pour être immuables, les données de données peuvent offrir cette fonctionnalité en définissant gelen = true code> dans le décorateur, mais fournit une grande plus grande flexibilité dans l'ensemble. P>

Si vous êtes dans Type Inc. dans votre code Python, ils entrent vraiment en jeu. P >

L'autre avantage est comme si vous avez dit - Dictionnaires imbriqués complexes. Vous pouvez définir des dataclasses comme vos types et les représenter dans des données de données de manière claire et concise. P>

Considérez les éléments suivants: P>

@dataclass
class Stock:
   quantity: int = 0


0 commentaires