Sujets à traiter

Introduction
Quelques bases de syntaxe nécessaires
Les déclarations de variables
Les constantes
Les instructions conditionnelles
La syntaxe des boucles
Les boucles « while »
Les listes (arrays)
Tri dans les listes
Les tableaux multidimensionnels
Les tuples
Les ensembles
Les dictionnaires
Les structures
Les fonctions
Interprétation du code Python à la volée
Les concepts objet
Définition des classes et instanciation des objets
Les propriétés
Le constructeur
La fonction « dir »
L’ajout d’attributs à un objet
Les méthodes
Les membres privés et l’encapsulation
Les accesseurs
L’héritage
Redéfinir des méthodes (override)
Redéfinir les opérateurs
Le polymorphisme
Le polymorphisme d’overriding
Le polymorphisme d’overloading
Les kwargs
Le polymorphisme d’interface
Les propriétés et méthodes de classe
Les classes abstraites
Les interfaces
Autres aspects et design patterns en Python
La gestion des erreurs : les exceptions
Créer ses propres exceptions
Les packages
Installer un package
Structurer ses programmes en packages
Quelques considérations sur l’héritage multiple
La résolution de l’ordre des méthodes avec l’algorithme C3 Linearization
L’héritage en diamant (ou en losange)
Les classes mixin
Le « duck typing »
La gestion des ressources avec with / as
La gestion des fichiers
La gestion des erreurs sur les fichiers
Manipulation de fichiers binaires
Lecture et écriture de fichiers binaires avec des structures de données
Lecture/écriture de fichiers JSON
Lecture/écriture de fichiers CSV
La sérialisation d’objets
Chemins de fichiers (pathlib)
Se connecter à une URL sur le Web
Les bases de données relationnelles
Conclusion
Table des matières

Pour des développeurs C#, je privilégierais les chapitres qui permettent d’apprendre les particularités de Python et d’éviter de transposer automatiquement les habitudes de .NET. Votre liste constitue une bonne base, mais certains sujets gagneraient à être regroupés et quelques éléments essentiels à être ajoutés.

Voici le plan que je retiendrais, dans un ordre pédagogique :

Chapitre Points importants pour un développeur C#
1. Présentation de Python et de son environnement Langage et interpréteur, CPython, exécution d’un script, console interactive, installation et outils de développement.
2. Syntaxe et instructions fondamentales Indentation, commentaires, conditions, boucles for et while, range, break, continue et correspondance de motifs avec match.
3. Variables, objets et système de types Typage dynamique, noms et références aux objets, conversions, None, types mutables et immuables.
4. Types fondamentaux et chaînes de caractères Booléens, nombres, chaînes, formatage avec les f-strings, particularités des opérations et des conversions.
5. Identité, égalité et copies Différences entre is et ==, partage des références, copie superficielle et copie profonde.
6. Collections et manipulation des données Listes, tuples, ensembles, dictionnaires, slicing, décomposition, tri et compréhensions.
7. Fonctions et passage des arguments Paramètres positionnels et nommés, valeurs par défaut, *args, **kwargs, valeurs de retour et piège des arguments par défaut mutables.
8. Portée des variables et fonctions comme objets Portées, global, nonlocal, fonctions passées en paramètres, lambdas et fermetures.
9. Itérables, itérateurs et générateurs Protocoles d’itération, iter, next, yield, expressions génératrices et évaluation différée ; rapprochement avec IEnumerable<T>.
10. Modules, packages et dépendances Imports, organisation du code, point d’entrée, environnements virtuels, installation de dépendances et configuration du projet.
11. Classes et modèle objet Classes, instances, self, initialisation avec __init__, attributs d’instance et de classe, méthodes d’instance, statiques et de classe.
12. Encapsulation et propriétés Conventions de visibilité, propriétés avec property, validation des modifications et différences avec les modificateurs d’accès de C#.
13. Héritage, composition et polymorphisme Redéfinition des méthodes, super, duck typing, composition et introduction à l’héritage multiple.
14. Méthodes spéciales et modèle de données Représentation des objets, égalité, hachage, opérateurs et intégration avec les mécanismes du langage.
15. Annotations de types et contrats Typage statique facultatif, unions, génériques, classes abstraites et protocoles ; comparaison avec les interfaces C#.
16. Dataclasses et modélisation des données Définition concise d’objets de données, égalité, immutabilité et comparaison avec les records C#.
17. Décorateurs Transformation et enrichissement de fonctions ou de classes ; distinction avec les attributs C#.
18. Exceptions et gestion des ressources try, except, else, finally, exceptions personnalisées et gestionnaires de contexte avec with ; rapprochement avec using.
19. Fichiers et formats de données pathlib, encodage, fichiers texte et binaires, JSON, CSV et précautions liées à la sérialisation.
20. Tests, débogage et qualité du code Tests unitaires, assertions, journalisation, conventions de nommage, formatage et analyse statique.
21. Programmation asynchrone et concurrence Coroutines, async, await, asyncio, threads et processus ; différences avec le modèle de tâches de .NET.
22. Mise en pratique dans une application complète Organisation du projet, règles métier, appels HTTP, persistance, tests et gestion des dépendances.

Dans votre liste, je regrouperais les petits sujets dans des chapitres plus larges : dir, l’ajout d’attributs et le constructeur dans le modèle objet ; les accesseurs dans les propriétés ; les différentes opérations sur les fichiers dans un même ensemble.

Je modifierais également quelques intitulés pour éviter des équivalences trompeuses :

  • « Les listes (arrays) » → « Les listes » : une liste Python ne correspond pas directement à un tableau C#.
  • « Les constantes » → une section sur les conventions et les annotations : Python ne possède pas un équivalent direct de const garantissant l’interdiction de réaffectation.
  • « Le polymorphisme d’overloading » → « Les alternatives à la surcharge de méthodes » : définir plusieurs méthodes de même nom avec des signatures différentes ne fonctionne pas comme en C#.
  • « Les interfaces » → « Les contrats : classes abstraites et protocoles ».
  • « Les structures » → un intitulé à préciser : objets de données, dataclasses ou représentation de données binaires selon votre intention.

L’héritage en diamant, l’algorithme C3 et les mixins seraient utiles dans une section avancée. Les design patterns et l’accès aux bases de données pourraient également venir après la maîtrise du langage.

Les ajouts prioritaires à votre liste sont donc le modèle des références et la mutabilité, les compréhensions, les générateurs, les annotations de types, les décorateurs, les environnements virtuels et les tests. Ils donneraient au livre une véritable orientation Python, tout en répondant aux questions naturelles d’un développeur C#.