Module proposé en complément des formations data science, ou comme formation autonome selon le besoin.
La plupart des développeurs Python atteignent un plateau après quelques années : ils écrivent du code qui fonctionne, mais ne maîtrisent pas les mécanismes qui rendent Python aussi expressif. Quand ils lisent le code source de Pandas, Polars, SQLAlchemy ou pytest, ils tombent sur des décorateurs, des descripteurs, des métaclasses — et ils décrochent.
Cette formation franchit ce cap. Elle explore les paradigmes avancés du langage : générateurs et itérateurs personnalisés, décorateurs et clôtures, descripteurs, métaclasses. Ce sont les notions qui permettent de comprendre les grandes librairies Python et d'écrire du code générique, réutilisable et maintenable.
À l'issue de cette formation, vos collaborateurs sauront
- Distinguer et utiliser méthodes statiques, de classe et d'instance selon le bon contexte
- Implémenter des décorateurs en utilisant clôtures et attributs de fonctions
- Concevoir des itérateurs personnalisés avec des fonctions génératrices
- Contrôler l'accès aux attributs avec propriétés et descripteurs
- Comprendre le protocole des métaclasses et sa relation avec le système de types Python
- Lire et comprendre le code source des grandes librairies de l'écosystème Python
Programme détaillé
Module 1 — Méthodes statiques et de classe
Révision des classes et instances. Fonctions, méthodes bound et unbound. Méthodes statiques : usages et limites. Méthodes de classe : usages canoniques (constructeurs alternatifs, polymorphisme). Choisir la bonne forme selon le contexte.
Module 2 — Décorateurs
Callables, fonctions et clôtures : les mécanismes sous-jacents. Conception de décorateurs sous forme de fonctions, puis sous forme de classes. Attributs de fonctions et conservation des métadonnées avec functools.wraps. Décorateurs de classe. Applications concrètes : timer, watchdog, memoization.
Module 3 — Itérateurs et générateurs
Le protocole d'itération en profondeur : __iter__ et __next__. Fonctions génératrices et le mot-clé yield. Expressions génératrices et leur empreinte mémoire. Conception d'itérateurs personnalisés pour vos propres structures de données. Application : chaînes de traitement composables.
Module 4 — Gestion avancée des attributs
Propriétés (@property, setter, deleter). Protocole descripteur : __get__, __set__, __delete__. Descripteurs de données vs non-données. Hooks d'attribut : __getattr__, __setattr__, __getattribute__. Applications : validation automatique, attributs calculés, branchements.
Module 5 — Métaclasses
La relation instance/classe/métaclasse dans le modèle objet Python. La métaclasse type et la création dynamique de classes. Définir une métaclasse personnalisée avec __new__ et __init__. Cas d'usage : enregistrement automatique, validation de classe, singletons.
Public et prérequis
Public cible
Développeurs, ingénieurs, chercheurs souhaitant approfondir leur maîtrise de Python au-delà des bases et comprendre les mécanismes internes du langage.
Prérequis
Avoir suivi la formation « Python — niveau 1 » ou disposer d'un niveau équivalent : maîtrise des références partagées, du typage dynamique, des espaces de nommage et de l'itération. Bonne compréhension des classes et instances.
Méthode pédagogique
La formation alterne exposés théoriques courts et exercices pratiques sur notebooks Jupyter. Chaque concept est immédiatement mis en application. Une attention particulière est portée aux techniques les plus récentes et aux bonnes pratiques issues de l'expérience terrain — notamment celles que je rencontre dans les codes sources des librairies majeures de l'écosystème.
Les supports sont fournis aux participants à l'issue de la formation, accompagnés des notebooks d'exercices corrigés.
Une formation utile à toute équipe Python mature
Cette formation est particulièrement adaptée aux équipes qui développent leurs propres librairies internes, contribuent à des projets open source, ou doivent maintenir du code Python de production complexe. Elle se combine naturellement avec les formations data science pour les équipes qui veulent à la fois performance et qualité d'architecture.
Documentation officielle
Data Model Python (métaclasses, descripteurs), PEP 318 (décorateurs), PEP 255 (générateurs).
Questions fréquentes
Quels sont les prérequis concrets pour suivre cette formation ?
Il faut maîtriser les références partagées, le typage dynamique, les espaces de nommage et l'itération — soit avoir suivi la formation Python niveau 1, soit disposer d'un niveau équivalent. Une bonne compréhension des classes et instances est également requise.
À quoi sert concrètement de connaître les métaclasses ?
Les métaclasses permettent de comprendre le modèle objet de Python en profondeur, et d'écrire du code générique : enregistrement automatique de classes, validation à la définition, singletons. Elles apparaissent régulièrement dans les codes sources de Pandas, SQLAlchemy et pytest — des librairies que beaucoup d'équipes utilisent sans pouvoir en lire le code.
Quelle est la différence entre un décorateur sous forme de fonction et sous forme de classe ?
Les deux formes sont couvertes en module 2. Les décorateurs sous forme de classe peuvent sembler plus simples et plus puissants au premier abord, mais ils ont des limitations importantes — notamment l'impossibilité de décorer des méthodes de classe. Les décorateurs sous forme de fonction, appuyés sur les notions de clôtures et d'attributs non locaux (ou d'attributs de fonction), permettent de développer des décorateurs puissants et totalement génériques. C'est cette approche qui est privilégiée dans la formation.
Cette formation est-elle utile pour des équipes qui n'écrivent pas de librairies ?
Oui. Comprendre les descripteurs, les générateurs et les décorateurs permet de lire et de maintenir du code Python complexe, même sans en écrire. C'est utile pour toute équipe qui travaille avec des librairies tierces ou qui reprend du code de production existant.
Le format distanciel est-il adapté à ce type de formation ?
Oui. 90 % des participants jugent le format distanciel équivalent ou supérieur au présentiel. J'anime des formations à distance depuis 2020 et j'ai développé une pratique solide de l'enseignement en ligne. J'utilise Zoom, qui permet d'enregistrer les sessions et de les mettre à disposition des participants si souhaité, et CoCalc, une plateforme en ligne qui donne accès à des serveurs pré-configurés avec l'ensemble du matériel de formation et des librairies installées. CoCalc me permet également de suivre en temps réel la progression de chaque participant et d'intervenir directement pour corriger ou débloquer.
Peut-on combiner cette formation avec une formation data science ?
Oui, c'est une combinaison naturelle pour les équipes qui veulent à la fois la performance (Polars, Numba) et la qualité d'architecture (décorateurs, descripteurs, métaclasses).