Syntaxe et utilisation de base
Pour comprendre une classe de données et sa syntaxe, vous devez d'abord comprendre la disposition et la structure de base d'une classe Python. Vous trouverez ci-dessous un exemple montrant une simple classe Python:
Classe Stockinhand:Dans l'échantillon de code ci-dessus, une nouvelle classe appelée «Stockinhand» a été créée avec une méthode «__init__» définie à l'intérieur. La méthode __init__ est automatiquement invoquée chaque fois que vous créez une nouvelle instance de la classe de stockage. Dans ce cas, la méthode __init__ a été définie avec certains arguments obligatoires. Ainsi, vous ne pouvez pas créer une nouvelle instance de stockage sans certaines valeurs pour les arguments nécessaires. L'argument «auto» fournit une référence à l'instance d'une classe, vous pouvez donc l'utiliser pour vous référer à toute variable ou méthode au sein d'une classe tant que ces variables et méthodes ont été définies en utilisant l'argument de soi. L'argument d'auto agit comme un outil de commodité et il peut être nommé n'importe quoi. Vous pouvez également l'omettre complètement. Dans les deux dernières déclarations, une nouvelle instance de classe de stockage est créée et ses variables sont accessibles en utilisant la notation de points.
Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
40 50 60La même classe peut être définie à l'aide de DataClass comme suit:
à partir des classes de données importent la classe de donnéesLa première instruction importe le décorateur «Dataclass» du module «DataClasses». Les décorateurs peuvent être utilisés pour modifier le comportement des objets Python sans les changer réellement. Dans ce cas, le décorateur de la fermeture de données est prédéfini et provient du module DataClasses. Pour définir une fermeture de données, vous devez joindre le décorateur de la classe de données en utilisant le symbole «@» à une classe Python, comme indiqué dans l'échantillon de code ci-dessus. Dans les instructions suivantes, les variables dans la classe de données sont définies à l'aide de types de types pour indiquer quel type d'objet ils sont. Des indices de type ont été introduits dans Python 3.6 Et ils sont définis en utilisant des symboles «:» (Colon). Vous pouvez créer une nouvelle instance de la classe de données comme n'importe quelle autre classe Python. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
40 50 60Notez que si une méthode dans DataClass renvoie une valeur, vous pouvez lui attribuer un indice de type en utilisant le symbole "->". Voici un exemple:
à partir des classes de données importent la classe de donnéesUne nouvelle méthode appelée «Total_stock» a été créée et un indice de type utilisant le mot-clé «int» a été attribué pour indiquer le type de valeur de retour. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
150Les variables dans les objets de la fermeture de données peuvent avoir des valeurs par défaut
Vous pouvez attribuer des valeurs par défaut aux membres des classes de données après des conseils de type. Voici un exemple:
à partir des classes de données importent la classe de donnéesDans la deuxième dernière déclaration, aucun argument n'a été fourni lors de la création d'une nouvelle instance de classe de données de stockage, de sorte que des valeurs par défaut ont été utilisées. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
150Les membres de la classe de données sont mutables
Les classes de données sont mutables, vous pouvez donc modifier la valeur de ses membres en obtenant une référence à eux. Vous trouverez ci-dessous un exemple de code:
à partir des classes de données importent la classe de donnéesLa valeur de la variable de pommes a été modifiée avant d'appeler la méthode Total_stock. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
210Création d'une classe de données à partir d'une liste
Vous pouvez créer une classe de données programmatiquement à l'aide de la méthode «Make_dataclass», comme indiqué dans l'échantillon de code ci-dessous:
Importer des classes de donnéesLa méthode Make_dataclass prend un nom de classe et une liste des champs membres comme deux arguments obligatoires. Vous pouvez définir les membres comme une liste de tuples où chaque tuple contient le nom de la variable, son type indice et sa valeur par défaut. La définition de la valeur par défaut n'est pas requise, vous pouvez l'omettre pour ne pas affecter la valeur par défaut. L'argument d'espace de noms en option prend un dictionnaire qui peut être utilisé pour définir les fonctions des membres à l'aide de paires de valeurs clés et de fonctions lambda. Le code ci-dessus est exactement équivalent à la définition manuellement la classe de données suivante:
à partir des classes de données importent la classe de donnéesAprès avoir exécuté les deux échantillons de code ci-dessus, vous devriez obtenir la sortie suivante:
210Pourquoi utiliser une classe de données au lieu d'une classe?
Vous vous demandez peut-être pourquoi utiliser les classes de données si elles sont presque les mêmes que les autres classes Python? L'un des principaux avantages de l'utilisation des classes de données est sa concision. Vous pouvez créer des classes de données en utilisant des raccourcis propres et minimaux sans trop de code de passe-partout. Ils sont particulièrement conçus pour être utilisés comme conteneurs de données où les variables peuvent être facilement accessibles en utilisant la notation de points, bien que vous puissiez également utiliser les classes de données comme classes à part entière. En termes simples, si vous souhaitez utiliser une classe Python juste pour l'utiliser comme magasin de données, DataClass semble être un meilleur choix.
Conclusion
Les classes de données de Python fournissent un moyen minimal de créer rapidement des classes Python destinées à être utilisées comme magasins de données. Vous pouvez obtenir des références aux membres des classes de données en utilisant la notation de points et ils sont particulièrement utiles lorsque vous recherchez des dictionnaires comme des paires de valeurs clés qui peuvent être accessibles en utilisant la notation de points.