Un aperçu des nouveautés de Python 3.7 : le décorateur @dataclass

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
98
Mois de parution
septembre 2018
Domaines


Résumé
Comme à chaque nouvelle version de Python, un lot de nouveautés fait son apparition. Je vous propose dans cet article de nous attarder sur l'ajout du décorateur @dataclass dans Python 3.7.

Vous l'aurez noté, Python 3.7 est sorti il y a très peu de temps… Mais j'ai commencé à écrire cet article en testant les dataclasses sur la première release candidate de Python 3.7 (la version 3.7 RC 1)…

Pour tester simplement une version de Python en cours de développement, vous pouvez utiliser Pyenv [1]. Par exemple ici, puisque Python 3.7 n'était pas sorti au début de l'écriture de cet article, j'ai utilisé :

$ pyenv install 3.7-dev

$ pyenv virtualenv 3.7-dev dataclass

$ mkdir test_python3.7

$ cd test_python3.7

$ pyenv local dataclass

(dataclass) $

Les dataclasses vont permettre de simplifier la déclaration de classes en Python en générant de manière automatique le constructeur. Comment ? C'est ce que nous allons voir…

1. Déclaration classique de classe

Pour comprendre l'intérêt des dataclasses, il faut repartir de la définition d'une classe en Python. Nous prendrons ici un exemple classique d'une personne définie par un nom, un prénom et un âge :

01: class...

Cet article est réservé aux abonnés. Il vous reste 91% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Persistance et objets en C++

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
114
Mois de parution
mai 2021
Domaines
Résumé

Au travers de deux articles [1-2] sur les principes de l’orienté objet en C++, nous avions abordé encapsulation, héritage, et polymorphisme. Nous proposons dans ce nouvel article les classes de base pour gérer la persistance d’objets dans des fichiers. Ces classes utilisent les principes énoncés ci-dessus et présentent des stratégies via la généricité. Un exemple de stratégie pour stocker en binaire pourra être redéfini pour d’autres stratégies, comme un stockage en XML.

Application réseau avec Erlang : utilisation du protocole UDP

Magazine
Marque
GNU/Linux Magazine
Numéro
248
Mois de parution
mai 2021
Domaines
Résumé

La société Ericsson, pionnière dans le domaine des télécommunications, a été à l’origine de la création du langage Erlang. La bibliothèque standard offre toutes les méthodes pour gérer les connexions réseau, que ce soit pour créer son protocole au-dessus de TCP, UDP ou encore TLS, mais aussi en réutilisant des implémentations d’ores et déjà existantes au sein de l’écosystème fourni avec la release.

Flutter : applications mobiles, web et desktop

Magazine
Marque
GNU/Linux Magazine
Numéro
248
Mois de parution
mai 2021
Domaines
Résumé

Flutter est un framework permettant de développer des applications natives pour Linux, Windows, macOS, Android, iOS et le Web à partir du même code source. Un moteur graphique OpenGL ultra performant et la compilation native en ARM, x86-64 ainsi que WebAssembly, associés à un cycle de développement agile et hyper intuitif, en font la solution ultime pour les créateurs d’applications. L’essayer, c’est l’adopter !

Un bot qui surveille le Web et envoie des alertes

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
114
Mois de parution
mai 2021
Domaines
Résumé

De nos jours, lorsque l’on recherche une information, on se tourne immédiatement vers le Web. Ainsi, de très nombreuses informations sont mises à jour quotidiennement et il faut donc penser à visiter les sites les produisant, de manière à être au courant des dernières modifications. Et si nous codions un bot qui ferait cela pour nous ?

Intégration des alertes de Nagios dans Grafana

Magazine
Marque
GNU/Linux Magazine
Numéro
248
Mois de parution
mai 2021
Domaines
Résumé

Vous avez succombé à l’esthétique soignée des tableaux de bord de Grafana, mais vous ne pouvez pas vous passer de l’écran d’alertes du vénérable Nagios ! Alors, est-il possible de faire cohabiter ces deux produits ? Avec un peu de code Python, cela devrait être possible !