• Aide
  • Eurêkoi Eurêkoi

Livre

Le petit Python orienté objet : programmation orientée objet avec Python 3

Résumé

Un cours complet sur la programmation orientée objet en langage Python et un aide-mémoire exhaustif : opérateurs, fonction super, descripteurs, métaclasses, entre autres.


  • Éditeur(s)
  • Date
    • 2022
  • Notes
    • Bibliogr. 1 p. Index
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (828 p.) : ill. ; 25 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-340-06406-5
  • Indice
  • Quatrième de couverture
    • Le petit Python orienté objet

      Programmation orientée objet avec Python 3

      Python est un langage de programmation populaire, gratuit et élégant, très utilisé dans l'enseignement, la recherche, le big data, le web, etc.

      Le petit Python orienté objet est un cours complet sur la POO en langage Python et un aide-mémoire exhaustif. On décrit de manière simple et précise les notions importantes comme les objets, classes, méthodes, héritage, surcharge, constructeurs... Un chapitre remarquable est consacré aux tables de hachage et à la fonction hash.

      Tous les thèmes sont abordés : affichage, opérateurs, espaces de noms (aliasing), ordre de résolution d'un attribut (MRO et algorithme C3), fonction super, méthodes spéciales d'accès aux attributs, descripteurs, type property, métaclasses, etc.

      On étudie les modules abc (classes abstraites), threading (fils d'exécution en parallèle), Socket (échanges à travers un réseau) et urllib (requêtes HTTP et accès à tout type d'URL).

      On aborde des questions annexes comme la fermeture d'une fonction, les pointeurs, le passage de paramètre par valeur, variable ou référence, les listes chaînées, le complément à 2...

      La table des matières et l'Index permettent de retrouver rapidement et efficacement la moindre syntaxe.

      Chaque point est illustré par des exemples et des scripts permettant au lecteur de comprendre en profondeur les notions étudiées. Chaque chapitre s'achève sur une introspection, pratique chère au langage Python.


  • Tables des matières
      • Le petit Python orienté objet

      • Programmation orientée objet avec Python 3

      • Richard Gomez

      • Ellipses

      • Prologue 5
      • 1 Paradigme orienté objet 33
      • 1.1 Introduction33
      • 1.2 Objets et méthodes34
      • 1.3 Notion de classe37
      • 1.4 Héritage, surcharge et polymorphisme39
      • 1.4.1 Héritage39
      • 1.4.2 Surcharge40
      • 1.4.3 Surcharge des opérateurs usuels43
      • 1.4.4 Polymorphisme44
      • 1.5 Agrégation et composition44
      • 1.6 Méthodes d'instances, méthodes de classes et méthodes statiques46
      • 1.7 Langage UML47
      • 2 Mots réservés et fonctions internes orientés objet 51
      • 2.1 Mots réservés orientés objet51
      • 2.2 Données internes (module builtins)52
      • 2.3 Données internes orientées objet54
      • 3 Types offerts par Python 55
      • 3.1 Introduction55
      • 3.2 Catégories I et III56
      • 3.3 Catégorie II : les types d'exceptions57
      • 3.4 Catégories IV et V57
      • 3.5 Interfaces offertes par Python58
      • 3.6 Hiérarchie officielle des types internes59
      • 3.7 Introspection60
      • 4 Objets 63
      • 4.1 Introduction63
      • 4.2 Valeur64
      • 4.2.1 Définition64
      • 4.2.2 Valeur des objets de type interne65
      • 4.2.2.1 Nombres65
      • 4.2.2.2 Chaînes65
      • 4.2.2.3 Booléens66
      • 4.2.2.4 Conteneurs66
      • 4.2.2.5 Objets de type object66
      • 4.2.3 Valeur d'une instance de classe67
      • 4.2.4 Mécanisme derrière « == »68
      • 4.3 Identité70
      • 4.3.1 Définition70
      • 4.3.2 Bizarrerie en coulisse70
      • 4.3.3 Cas des objets mutables72
      • 5 Classes 75
      • 5.1 Classes chez Python75
      • 5.2 Créer une classe75
      • 5.3 Variables d'une classe (attributs)76
      • 5.3.1 Définition76
      • 5.3.2 Attributs-données et attributs-méthodes78
      • 5.3.3 Identificateurs recommandés79
      • 5.3.4 Dictionnaire _ _dict_ _80
      • 5.4 Instancier une classe81
      • 5.5 Méthodes82
      • 5.6 Filiation et héritage83
      • 5.7 Attributs name et qualname86
      • 5.8 Fonction type88
      • 5.9 Docstring89
      • 5.10 Attribut slots90
      • 5.11 Décorer une classe93
      • 5.12 Introspection93
      • 5.12.1 Afficher les parents d'une classe93
      • 5.12.2 Retour au dictionnaire94
      • 5.12.3 Une bizarrerie avec les attributs privés95
      • 6 Méthodes 97
      • 6.1 Méthodes d'instances97
      • 6.2 Méthodes de classes98
      • 6.3 Méthodes statiques99
      • 6.4 Cas d'utilisation100
      • 6.4.1 Généralités100
      • 6.4.2 Exemples internes101
      • 6.4.2.1 float . fromhex101
      • 6.4.2.2 int . from_bytes102
      • 6.4.2.3 str . maketrans102
      • 6.4.2.4 dict . fromkeys103
      • 6.4.2.5 bytearray . fromhex103
      • 6.4.2.6 bytes. fromhex104
      • 6.4.3 Cas des fonctions d'un module104
      • 6.4.4 Exemples avec des matrices105
      • 6.4.5 Exemples avec des dates108
      • 6.5 Introspection110
      • 6.5.1 Explorer method110
      • 6.5.2 Explorer classmethod111
      • 6.5.3 Explorer staticmethod113
      • 6.6 Bilan115
      • 7 Type object 117
      • 7.1 Introduction117
      • 7.2 Exploration rapide118
      • 7.3 Attributs basiques119
      • 7.3.1 Attribut _ _name _ _119
      • 7.3.2 Attribut _ _qualname_ _119
      • 7.3.3 Attribut _ _bases_ _119
      • 7.3.4 Attribut _ _dict_ _120
      • 7.4 Méthodes pour instancier121
      • 7.4.1 Méthode _ _new_ _121
      • 7.4.2 Méthode _ _init_ _123
      • 7.5 Méthodes pour afficher125
      • 7.5.1 Méthode _ _repr_ _125
      • 7.5.2 Méthode _ _str_ _125
      • 7.5.3 Méthode format125
      • 7.6 Méthodes pour comparer126
      • 7.7 Attributs pour introspection127
      • 7.7.1 Attribut _ _class_ _127
      • 7.7.2 Attribut _ _doc_ _128
      • 7.7.3 Méthode _ _dir_ _128
      • 7.7.4 Méthode _ _sizeof_ _129
      • 7.8 Méthodes accesseur, imitateur et effaceur129
      • 7.9 Attributs liés à l'héritage130
      • 7.9.1 Méthode mro130
      • 7.9.2 Attribut _ _mro_ _130
      • 7.9.3 Méthode _ _subclasses_ _131
      • 7.10 Méthode pour hacher131
      • 7.11 Curiosités132
      • 7.11.1 Mise en abyme132
      • 7.11.2 Bound ou unbound ?133
      • 7.11.3 Retour à l'espace des noms de object135
      • 7.11.4 Retour à subclasses136
      • 7.11.5 Retour à mro137
      • 7.11.6 Dernier coup d'oeil138
      • 8 Type function 139
      • 8.1 Paramètres139
      • 8.1.1 Introduction139
      • 8.1.2 Paramètres de position sans valeur par défaut140
      • 8.1.3 Paramètres nommés sans valeur par défaut140
      • 8.1.4 Paramètres positionnels ou nommés sans valeur par défaut140
      • 8.1.5 Paramètres avec valeur par défaut140
      • 8.1.6 Paramètre var-positional141
      • 8.1.7 Paramètre var-keyword141
      • 8.1.8 Signatures142
      • 8.1.9 Valeur par défaut et effet de bord145
      • 8.2 Arguments146
      • 8.3 Exemple : émulation de max148
      • 8.4 Expérience150
      • 8.5 Passage par valeur, variable ou référence ?150
      • 8.6 Attributs spécifiques151
      • 8.6.1 _ _name_ _152
      • 8.6.2 _ _qualname_ _152
      • 8.6.3 _ _doc_ _152
      • 8.6.4 _ _annotations_ _153
      • 8.6.5 _ _module_ _153
      • 8.6.6 _ _globals_ _153
      • 8.6.7 _ _defaults_ _153
      • 8.6.8 _ _kwdefaults_ _154
      • 8.6.9 __ _closure_ _154
      • 8.6.10 _ _code_ _154
      • 8.7 Distanciation154
      • 8.8 Ajouter des attributs à une fonction156
      • 8.9 Fermeture d'une fonction158
      • 8.9.1 Notion de variable libre158
      • 8.9.2 Contenu de la fermeture159
      • 8.9.3 Calcul de la fermeture160
      • 8.9.4 À quoi sert la fermeture ?162
      • 8.9.5 Quelques exemples amusants163
      • 8.9.6 Retour à une ancienne énigme165
      • 8.9.7 Émuler une classe avec une fonction166
      • 8.9.8 Conclusion168
      • 8.10 Annotations168
      • 8.10.1 Introduction168
      • 8.10.2 Module typing169
      • 8.10.3 Annotations contraignantes171
      • 8.10.3.1 Fonction checktypes171
      • 8.10.3.2 Fonction ensure_annotations du module ensure172
      • 8.10.3.3 Fonction validate172
      • 9 Constructeurs et initialiseurs 175
      • 9.1 Préliminaire175
      • 9.2 Mécanisme d'instanciation175
      • 9.3 Constructeurs178
      • 9.4 Pourquoi les constructeurs sont des méthodes statiques ?180
      • 9.5 Initialiseurs183
      • 9.5.1 Introduction183
      • 9.5.2 Appel de l'initialiseur184
      • 9.5.3 Utilisation courante184
      • 9.5.4 Exemple185
      • 9.5.5 Dérivation et Coopération185
      • 9.5.6 Confusion fréquente188
      • 9.6 Manipulations188
      • 9.7 Instanciation des types internes193
      • 9.7.1 Cas des objets mutables193
      • 9.7.2 Cas des objets non mutables194
      • 9.7.3 Cas des classes195
      • 9.8 Cas courants où l'on surcharge le constructeur196
      • 9.8.1 Dérivation d'un type interne d'objets non mutables196
      • 9.8.2 Dérivation de la classe type198
      • 9.9 Application à des design patterns200
      • 9.9.1 Singleton200
      • 9.9.2 Borg203
      • 9.9.3 Compteur d'instances206
      • 10 Destructeurs et ramasse-miettes 209
      • 10.1 Mot réservé del209
      • 10.2 Destructeur (finalizer)210
      • 10.3 La commande del est-elle utile ?215
      • 10.4 Exemple : retour au design pattern compteur216
      • 11 Espaces de noms 219
      • 11.1 Introduction219
      • 11.2 Opérations sur les variables220
      • 11.3 Espace des noms internes221
      • 11.4 Espace des noms globaux221
      • 11.5 Espace de noms locaux222
      • 11.5.1 Introduction222
      • 11.5.2 Variable globale et variable locale pointant vers le même objet . . .223
      • 11.5.3 Paramètres avec valeur par défaut224
      • 11.6 Résolution d'un nom dans le corps d'une fonction225
      • 11.7 Espace des noms associé à une classe228
      • 11.8 Espace des noms associé à une instance229
      • 11.9 Vie et mort des variables d'une classe et d'une instance231
      • 11.10 Résolution d'un nom dans le corps d'une classe233
      • 11.10.1 Énoncé des règles233
      • 11.10.2 Exemples235
      • 11.10.3 Une fonction à l'intérieur d'une classe236
      • 11.10.4 Curiosités238
      • 11.11 Outils pour l'introspection240
      • 11.11.1 Fonction dir240
      • 11.11.2 Attribut _ _dict_ _241
      • 11.11.3 Fonction globals241
      • 11.11.4 Fonction locals241
      • 11.11.5 Fonction vars242
      • 11.12 Notion de portée (scope)242
      • 11.13 À propos du tiret bas (underscore)243
      • 12 Méthodes spéciales pour l'affichage 245
      • 12.1 Méthode repr245
      • 12.1.1 Introduction245
      • 12.1.2 Penser à l'héritage246
      • 12.1.3 Représentation basée sur l'identité246
      • 12.1.4 Représentation des objets de type interne247
      • 12.1.4.1 Cas de object247
      • 12.1.4.2 Cas de classmethod, enumerate, filter, map, property, reversed, staticmethod et zip248
      • 12.1.4.3 Cas de function248
      • 12.1.4.4 Cas de memoryview249
      • 12.1.4.5 Cas de super249
      • 12.1.4.6 Cas de type250
      • 12.1.4.7 Cas de method251
      • 12.1.5 Représentation par défaut d'une instance de classe252
      • 12.1.6 Une surcharge pratique pour débugger253
      • 12.2 Méthode sfr254
      • 12.2.1 Introduction254
      • 12.2.2 Lien entre str et repr255
      • 12.2.3 Cas des objets conteneurs de type interne257
      • 12.3 Méthode format259
      • 12.3.1 Introduction259
      • 12.3.2 Mécanisme derrière la fonction format260
      • 12.3.3 Mécanisme derrière str. format260
      • 12.3.4 Surcharger format261
      • 12.4 Exemple amusant262
      • 13 None, Ellipsis et NotImplemented 265
      • 13.1 Objet None265
      • 13.1.1 Introduction265
      • 13.1.2 Affichage266
      • 13.1.3 Attributs266
      • 13.1.4 Retour par défaut267
      • 13.1.5 Utilisé comme valeur par défaut267
      • 13.1.6 Utilisé pour désactiver une méthode héritée268
      • 13.2 Objet Ellipsis268
      • 13.2.1 Introduction268
      • 13.2.2 Affichage269
      • 13.2.3 Utilisation269
      • 13.2.4 Exemple270
      • 13.3 Objet NotImplemented272
      • 13.3.1 Introduction272
      • 13.3.2 Usage général272
      • 13.3.3 Usage dans les opérateurs d'arité 2273
      • 13.3.4 Ne pas confondre avec NotImplementedError275
      • 14 Opérateurs d'arité 2 277
      • 14.1 Notion d'opérateur symétrique277
      • 14.2 Méthodes spéciales d'opérateurs278
      • 14.3 Symétrique d'une méthode d'opérateur278
      • 14.4 Mécanisme derrière les opérateurs arithmétiques279
      • 14.5 Mécanisme derrière les opérateurs de comparaison280
      • 14.5.1 Égalité et non égalité281
      • 14.5.2 Ordre284
      • 14.6 Opérateurs in situ (in place)286
      • 14.7 Priorités288
      • 14.8 Expériences288
      • 14.8.1 Expérience 1288
      • 14.8.2 Expérience 2289
      • 14.8.3 Expérience 3289
      • 14.8.4 Expérience 4290
      • 14.8.5 Expérience 5291
      • 14.8.6 Expérience 6291
      • 15 Objets subscriptables 293
      • 15.1 Définition293
      • 15.2 Méthode getitem294
      • 15.3 Méthode missing295
      • 15.4 Méthode setitem297
      • 15.5 Méthode delitem297
      • 15.6 Opération « for k in x »298
      • 15.7 Opération « k in a »299
      • 15.8 Méthode spéciale index301
      • 15.9 Exemple : matrices302
      • 16 Slicing 305
      • 16.1 Rappels305
      • 16.1.1 Rudiments305
      • 16.1.2 Syntaxes305
      • 16.1.3 Robustesse du slicing306
      • 16.2 Mécanisme derrière le slicing307
      • 16.3 Objets de type slice309
      • 16.4 Reconditionnement310
      • 16.5 Méthode slice . indices311
      • 16.6 Annexe : index312
      • 17 Séquences 315
      • 17.1 Définition315
      • 17.2 Les séquences sont itérables316
      • 17.3 Les séquences supportent l'opération « x in a »316
      • 17.4 Slicing317
      • 17.4.1 Rappels317
      • 17.4.2 Exemple consistant318
      • 17.4.3 Une autre version de cet exemple322
      • 17.5 Concaténation et répétition323
      • 17.6 Méthodes spéciales328
      • 17.6.1 Tour d'horizon328
      • 17.6.2 Méthode len328
      • 17.6.3 Lien entre len et reversed329
      • 17.6.4 Méthode reversed331
      • 17.7 Méthodes typiques332
      • 17.8 Exemple complet : séquences géométriques335
      • 17.8.1 Introduction335
      • 17.8.2 Slicing336
      • 17.8.3 Changer la longueur et la raison338
      • 17.8.4 Surcharge de setitem339
      • 17.8.5 Surcharge de delitem340
      • 17.8.6 Surcharge de méthodes typiques342
      • 17.8.6.1 Surcharge de append342
      • 17.8.6.2 Surcharge de extend343
      • 17.8.6.3 Surcharge de copy344
      • 17.8.6.4 Surcharge de index344
      • 17.8.6.5 Surcharge de reverse345
      • 17.8.6.6 Surcharge de pop345
      • 17.8.7 Surcharge de add et iadd346
      • 17.9 Exemple complet par dérivation347
      • 17.9.1 Introduction347
      • 17.9.2 Slicing349
      • 17.9.3 Changer la longueur et la raison349
      • 17.9.4 Surcharge de setitem350
      • 17.9.5 Surcharge de delitem350
      • 17.9.6 Surcharge de méthodes typiques352
      • 17.9.6.1 Méthodes à éliminer353
      • 17.9.6.2 Surcharge de append353
      • 17.9.6.3 Surcharge de extend353
      • 17.9.6.4 Surcharge de copy354
      • 17.9.6.5 Pas besoin de surcharger index354
      • 17.9.6.6 Pas besoin de surcharger reverse355
      • 17.9.6.7 Surcharge de pop355
      • 17.9.7 Surcharge de add et iadd356
      • 18 Itérables 359
      • 18.1 Définition359
      • 18.2 Mécanisme derrière « for k in x »359
      • 18.3 Cas particulier d'un objet muni de getitem360
      • 18.4 Fonction iter363
      • 18.5 Fonction next364
      • 18.6 Surcharger iter et next : usage courant365
      • 18.7 Itérateur versus pseudo-itérateur367
      • 18.8 Exemples complets369
      • 18.8.1 Suites de Syracuse369
      • 18.8.2 Itérer sur un entier370
      • 18.9 Émulation371
      • 18.10 Décompression373
      • 18.11 Opérateur splat373
      • 18.12 Introspection374
      • 18.13 Compléments sur iter et next375
      • 18.13.1 Appel de iter avec une fonction et une sentinelle375
      • 18.13.2 Appel de next avec valeur default377
      • 18.14 Expériences377
      • 18.15 En résumé378
      • 19 Conteneurs 381
      • 19.1 Définition381
      • 19.2 Mécanisme derrière « k in x »381
      • 19.3 Conteneurs de type interne382
      • 19.4 Surcharge de contains : exemples simples383
      • 19.4.1 Conteneur universel383
      • 19.4.2 Conteneur très exotique383
      • 19.4.3 Idéaux de Z384
      • 19.5 Cas particulier des itérables infinis385
      • 19.6 Émulation386
      • 19.7 Exemples387
      • 19.7.1 Retour à Syracuse387
      • 19.7.2 Divisibilité chez les entiers388
      • 19.7.3 Intervalles de R390
      • 20 Tables de hachage 393
      • 20.1 Introduction393
      • 20.1.1 Définition393
      • 20.1.2 Implémentation naïve des ensembles finis394
      • 20.1.3 Ensemble naïf versus set395
      • 20.1.4 Implémentation naïve des dictionnaires398
      • 20.2 Hachage-adressage quand l'univers est fini399
      • 20.2.1 Fonctionnement399
      • 20.2.2 Émulation401
      • 20.3 Hachage-adressage quand l'univers est infini403
      • 20.3.1 Principe de base403
      • 20.3.2 Traitement des collisions404
      • 20.3.3 Exemple à la main405
      • 20.3.4 Émulation406
      • 20.3.5 Défauts410
      • 20.3.5.1 Nécessité d'une bonne fonction de hachage410
      • 20.3.5.2 Modélisation410
      • 20.3.5.3 Paradoxe des anniversaires411
      • 20.3.5.4 Clusters415
      • 20.3.6 Variantes415
      • 20.4 Tables de hachage de type interne417
      • 20.4.1 Taille dynamique417
      • 20.4.2 Collections d'objets ou de valeurs ?418
      • 20.4.3 Objets hachables420
      • 20.4.3.1 Généralités420
      • 20.4.3.2 Récursivité421
      • 20.4.3.3 Introspection421
      • 20.4.4 Propriétés requises chez hash423
      • 20.4.4.1 Être entier423
      • 20.4.4.2 Être constant dans le temps423
      • 20.4.4.3 Être invariant modulo eq424
      • 20.4.4.4 Expérience de pensée : un hachage non invariant modulo eq424
      • 20.4.4.5 Suivre une distribution uniforme427
      • 20.4.5 Problème avec les mutables de type interne427
      • 20.4.6 Classe-identités versus classe-valeurs429
      • 20.4.7 Problème avec les classes-identités430
      • 20.4.8 Problème avec les classes-valeurs432
      • 20.4.9 Les 5 commandements436
      • 20.5 Expériences436
      • 20.5.1 Expérience 1436
      • 20.5.2 Expérience 2437
      • 20.5.3 Expérience 3437
      • 20.5.4 Expérience 4438
      • 20.5.5 Expérience 5439
      • 20.5.6 Expérience 6439
      • 20.5.7 Expérience 7440
      • 20.6 Fonction interne hash441
      • 20.6.1 Évolution de hash au fil du temps441
      • 20.6.2 Python interdit qu'un hachage donne -1443
      • 20.6.3 Définition de hash (n) pour n entier444
      • 20.6.4 Émulation du hash de int445
      • 20.6.5 Résidus et sommes digitales445
      • 20.6.6 Émulation du hash de int avec des sommes digitales446
      • 20.6.7 Compléments sur les opérateurs logiques (base 2)447
      • 20.6.7.1 Répunit447
      • 20.6.7.2 Opération AND447
      • 20.6.7.3 Opération OR448
      • 20.6.7.4 Opération XOR448
      • 20.6.7.5 Décalage logique vers la gauche (left shift)448
      • 20.6.7.6 Décalage logique vers la droite (right shift)449
      • 20.6.8 Emulation du hash de int avec des opérateurs logiques449
      • 20.6.9 Une remarque sur le nombre M61450
      • 20.6.10 Émulation de la fonction interne hash451
      • 20.6.11 Émulation du hash de str452
      • 20.6.12 Émulation du hash de tuple454
      • 20.6.13 Émulation du hash de Fraction454
      • 20.6.14 Émulation du hash de float455
      • 20.6.15 Émulation du hash de complexe456
      • 20.6.16 Bibliothèque de hachage hashlib456
      • 20.6.17 Expérience457
      • 21 Ensembles 459
      • 21.1 Introduction459
      • 21.2 Méthodes typiques459
      • 21.2.1 Méthodes de base459
      • 21.2.2 Opérations460
      • 21.2.3 Tests461
      • 21.2.4 Mises à jour461
      • 21.2.5 Autre462
      • 21.3 Méthodes spéciales463
      • 21.3.1 Méthodes spéciales de base463
      • 21.3.2 Opérations464
      • 21.3.3 Opérations in situ465
      • 21.3.4 Comparaisons466
      • 21.4 Exemple complet467
      • 21.4.1 Méthodes de base467
      • 21.4.2 Méthodes spéciales de base468
      • 21.4.3 Opérations typiques469
      • 21.4.4 Tests typiques470
      • 21.4.5 Mises à jour470
      • 21.4.6 Méthodes pop, clear et copy471
      • 21.4.7 Opérateurs arithmétiques472
      • 21.4.8 Opérateurs in situ472
      • 21.4.9 Comparaisons472
      • 21.5 Exemple avec des ensembles infinis473
      • 22 Tables de correspondance 477
      • 22.1 Introduction477
      • 22.1.1 Première présentation477
      • 22.1.2 Deuxième présentation478
      • 22.1.3 Troisième présentation479
      • 22.1.4 Quatrième présentation479
      • 22.2 Méthodes courantes chez une table de correspondance479
      • 22.2.1 Introspection dans dict480
      • 22.2.2 Méthodes de base480
      • 22.2.3 Mutations typiques481
      • 22.2.3.1 Méthode update481
      • 22.2.3.2 Méthode clear481
      • 22.2.3.3 Méthodes pop et popitem482
      • 22.2.4 Longueur et itération482
      • 22.2.5 Méthodes items, keys et values482
      • 22.2.6 Méthodes fromkeys483
      • 22.2.7 Méthode copy483
      • 22.3 Exemple complet484
      • 23 Objets appelables 491
      • 23.1 Définition491
      • 23.2 Mécanisme derrière un appel491
      • 23.3 Cas typiques493
      • 23.3.1 Fonctions et méthodes493
      • 23.3.2 Décorateurs gestionnaires de contexte493
      • 23.3.3 Classes (émulation de call dans type)493
      • 23.4 Emuler les fonctions numériques494
      • 23.4.1 Fonctions réelles d'une variable réelle494
      • 23.4.2 Fonctions réelles de plusieurs variables réelles497
      • 23.5 Emuler les variables aléatoires499
      • 23.5.1 Support fini499
      • 23.5.2 Support dénombrable502
      • 23.5.3 Support compact503
      • 23.5.4 Support non compact505
      • 23.5.4.1 Inversion de la fonction de répartition505
      • 23.5.4.2 Cas de la loi normale506
      • 24 Objets algébriques 509
      • 24.1 Introduction509
      • 24.2 Type bool509
      • 24.3 Types int (et bool)511
      • 24.3.1 Attributs typiques511
      • 24.3.2 Méthodes typiques511
      • 24.3.3 Méthode spéciale index512
      • 24.3.4 Opérateurs typiques d'arité 2512
      • 24.3.5 Opérateurs typiques d'arité 1513
      • 24.3.6 Opérateurs bit à bit d'arité 2513
      • 24.3.7 Opérateur bit à bit d'arité 1513
      • 24.3.8 Opérateurs de comparaison513
      • 24.3.9 Méthodes spéciales pour fonctions internes513
      • 24.3.10 Méthodes spéciales pour fonctions du module math514
      • 24.3.11 Implémentation514
      • 24.4 Type float514
      • 24.4.1 Attributs typiques514
      • 24.4.2 Méthodes typiques514
      • 24.4.3 Opérateurs typiques d'arité 2514
      • 24.4.4 Opérateurs typiques d'arité 1515
      • 24.4.5 Opérateurs de comparaison515
      • 24.4.6 Méthodes spéciales pour fonctions internes515
      • 24.4.7 Méthode spéciale pour la fonction trunc du module math515
      • 24.4.8 Instances particulières515
      • 24.4.9 Implémentation516
      • 24.5 Type complex516
      • 24.5.1 Instanciation516
      • 24.5.2 Méthode typique517
      • 24.5.3 Opérateurs typiques d'arité 2517
      • 24.5.4 Opérateurs typiques d'arité 1517
      • 24.5.5 Opérateurs de comparaison517
      • 24.5.6 Méthodes spéciales pour fonctions internes517
      • 24.6 Type decimal. Decimal517
      • 24.6.1 Intérêt du type Decimal517
      • 24.6.2 Notion de contexte519
      • 24.6.3 Signaux, flags et traps520
      • 24.6.4 Méthodes d'un objet de type Context521
      • 24.6.5 Méthodes d'un objet de type Decimal521
      • 24.6.6 Instances particulières521
      • 24.7 Type fractions . Fraction522
      • 24.7.1 Introduction522
      • 24.7.2 Attributs et méthodes522
      • 24.8 Classe abstraite Number523
      • 24.9 Priorités entre opérateurs524
      • 24.10 Classe algébrique en général524
      • 24.11 Dériver un type numérique526
      • 24.12 Exemple : quaternions527
      • 24.13 Exemple : permutations533
      • 24.14 Exemple : vecteurs537
      • 24.15 Exemple : fonctions et variables aléatoires541
      • 24.15.1 Retour aux fonctions réelles d'une variable réelle541
      • 24.15.2 Retour aux variables aléatoires réelles541
      • 25 Gestionnaires de contexte 545
      • 25.1 Introduction545
      • 25.2 Signature de enter et exit546
      • 25.3 Gestionnaire customisé548
      • 25.4 Gestionnaire-décorateur549
      • 26 Héritage 553
      • 26.1 Taxonomie et notion d'héritage553
      • 26.2 Ordre de résolution d'un attribut (MRO)556
      • 26.2.1 Linéarisation556
      • 26.2.2 Position du problème557
      • 26.2.3 Ordre local558
      • 26.2.4 Depth first558
      • 26.2.5 From left to right, depth first : LRDF559
      • 26.2.6 Monotonie560
      • 26.2.7 Algorithme LRDF amélioré : Keep last LRDF561
      • 26.2.8 Exemple fâcheux562
      • 26.2.9 Solution adoptée par Python 3563
      • 26.3 Algorithme C3564
      • 26.4 Superclasse569
      • 26.4.1 Ne pas confondre les superclasses avec la superclasse569
      • 26.4.2 Fonction super570
      • 26.5 Un peu d'histoire571
      • 26.5.1 Python 2.1571
      • 26.5.2 Python 2.2 : arrivée des classes modernes572
      • 26.5.3 Python 2.3 : adoption de l'algorithme C3575
      • 27 Fonction super 577
      • 27.1 Notion de superclasse577
      • 27.2 Fonction super578
      • 27.3 Utilisation élémentaire580
      • 27.4 Utilisation un peu moins élémentaire582
      • 27.5 Classes coopératives583
      • 27.5.1 Introduction583
      • 27.5.2 Signature robuste586
      • 27.5.3 Stopper la chaîne des délégations587
      • 27.6 Adaptateur588
      • 27.7 Exemple complet589
      • 27.8 Introspection594
      • 27.9 Émulation598
      • 28 Projet : dans la savane 601
      • 28.1 Objectif601
      • 28.2 Population globale601
      • 28.3 Classe origine602
      • 28.4 Êtres vivants, faune et flore603
      • 28.5 Programme principal606
      • 28.6 Enrichissements607
      • 29 Méthodes spéciales derrière les accesseurs 609
      • 29.1 Introduction609
      • 29.2 Fonctions getattr, setattr, delattr et hasattr610
      • 29.3 Méthode getattribute611
      • 29.3.1 Introduction611
      • 29.3.2 Exemple de surcharge612
      • 29.3.3 Attention aux appels récursifs613
      • 29.3.4 Accesseur de object613
      • 29.3.5 Émulation de l'accesseur de object617
      • 29.4 Méthode getattr618
      • 29.5 Méthode setattr619
      • 29.5.1 Fonctionnement619
      • 29.5.2 Émulation du mutateur de object621
      • 29.6 Méthode delattr623
      • 29.6.1 Fonctionnement623
      • 29.6.2 Émulation de l'effaceur de object624
      • 29.7 Surcharger dir625
      • 30 Descripteurs 627
      • 30.1 Introduction627
      • 30.1.1 Définition627
      • 30.1.2 Méthode get628
      • 30.1.3 Méthode set630
      • 30.1.4 Méthode delete631
      • 30.1.5 Méthode set name631
      • 30.1.6 Protocole descripteur632
      • 30.2 Cas des fonctions et méthodes632
      • 30.2.1 Fonctions632
      • 30.2.2 Méthodes d'instances634
      • 30.2.3 Méthodes statiques636
      • 30.2.4 Méthodes de classes637
      • 30.3 Cas d'un member descriptor (slots)639
      • 30.4 Cas d'un getset descriptor640
      • 30.5 Utilisations élémentaires643
      • 30.5.1 Première expérience643
      • 30.5.2 Deuxième expérience644
      • 30.5.3 Troisième expérience645
      • 30.6 Utilisation de set name646
      • 30.7 Validateurs647
      • 30.8 Propriétés648
      • 30.9 Émulation totale649
      • 30.10 Retour au problème de bound versus unbound658
      • 31 Type property 661
      • 31.1 Introduction661
      • 31.2 Application simpliste663
      • 31.3 Méthodes getter, setter et deleter663
      • 31.4 Émulation665
      • 32 Métaclasses 667
      • 32.1 Définitions667
      • 32.2 Dériver type668
      • 32.2.1 Usage courant : surcharger new668
      • 32.2.2 Alternative : surcharger init669
      • 32.3 Instancier une métaclasse669
      • 32.3.1 Appel direct670
      • 32.3.2 Mot-clé class avec paramètre metaclass670
      • 32.4 À propos du paramètre metaclass671
      • 32.4.1 Avec quoi alimenter ce paramètre ?671
      • 32.4.2 Avec un objet possédant une méthode call671
      • 32.4.3 Avec une fonction672
      • 32.5 Exemple673
      • 32.6 Attributs mro et mro674
      • 32.7 Émulation du call de type674
      • 32.8 Méthode init subclass675
      • 32.8.1 Introduction675
      • 32.8.2 Signature676
      • 32.8.3 Exemple amusant677
      • 32.8.4 Nature677
      • 32.8.5 Émulation678
      • 32.9 Méthodes instancecheck et subclasscheck679
      • 32.9.1 Méthode spéciale derrière isinstance679
      • 32.9.2 Méthode spéciale derrière issubclass680
      • 32.9.3 Cas typique681
      • 32.9.4 Introspection682
      • 33 Classes abstraites (abc) 685
      • 33.1 Définition685
      • 33.2 Métaclasse ABCMeta du module abc685
      • 33.3 Classe ABC687
      • 33.4 Décorateur abstractmethod688
      • 33.5 Décorateurs obsolètes689
      • 33.6 Méthode register690
      • 33.7 Surcharge de subclasscheck dans ABCMeta692
      • 33.8 Surcharge de instancecheck dans ABCMeta693
      • 33.9 Méthode subclasshook693
      • 33.10 Cas courants695
      • 33.11 Exemple : classe abstraite des validateurs699
      • 33.12 Module collections. abc701
      • 33.13 Module numbers703
      • 34 Aide-mémoire méthodes spéciales 705
      • 34.1 Instanciation et destruction705
      • 34.2 Dérivation705
      • 34.3 Espaces de noms705
      • 34.4 Affichage705
      • 34.5 Comparaisons706
      • 34.6 Opérateurs arithmétiques706
      • 34.6.1 Arité 1706
      • 34.6.2 Arité 2706
      • 34.7 Valeur booléenne707
      • 34.8 Subscriptables707
      • 34.9 Conteneurs et séquences707
      • 34.10 Itérables707
      • 34.11 Hachables707
      • 34.12 Ensembles707
      • 34.13 Tables de correspondance708
      • 34.14 Appelables708
      • 34.15 Objets algébriques708
      • 34.16 Gestionnaires de contexte708
      • 34.17 Accesseurs709
      • 34.18 Descripteurs709
      • 34.19 Introspection709
      • 34.20 Autres méthodes709
      • 34.20.1 Méthode bytes709
      • 34.20.2 Méthode length hint710
      • 34.20.3 Méthode pour objets asynchrones710
      • 34.20.4 Divers710
      • 34.21 Créer ses propres méthodes spéciales711
      • 35 Threading 715
      • 35.1 Notion de fil d'exécution715
      • 35.2 Fils d'exécution simultanés717
      • 35.3 Dériver la classe Thread718
      • 35.4 Attribut de type Thread721
      • 35.5 Synchroniser des fils avec des instances de Lock721
      • 35.6 Méthode join724
      • 35.7 Fonctions utiles726
      • 35.8 Introspection727
      • 35.9 Parallélisme728
      • 36 Réseaux 731
      • 36.1 Protocoles et ports731
      • 36.2 Notion de socket732
      • 36.2.1 Connecteur732
      • 36.2.2 Famille et genre733
      • 36.2.3 Signature de socket733
      • 36.2.4 Adresses734
      • 36.3 Principes de base734
      • 36.4 Émettre et recevoir736
      • 36.5 Mise en pratique737
      • 36.5.1 Manipulations élémentaires737
      • 36.5.2 Conseils pratiques741
      • 36.5.3 Connecter deux ordinateurs à travers le réseau Internet742
      • 36.6 Envoyer une requête à un serveur HTTP743
      • 36.7 Expérience avec le navigateur746
      • 36.8 Recommandations officielles748
      • 36.8.1 Aléas du réseau748
      • 36.8.2 Messages de longueurs fixes748
      • 36.8.3 Messages indiquant leurs longueurs749
      • 36.8.4 Méthode sendall751
      • 36.8.5 Conclusion751
      • 36.9 Chat rudimentaire (ping-pong)751
      • 36.9.1 Client752
      • 36.9.2 Serveur752
      • 36.10 Les sockets sont des gestionnaires de contexte753
      • 36.11 Fonction select755
      • 36.12 Messagerie instantanée757
      • 36.12.1 Position du problème757
      • 36.12.2 Chat avec select et setblocking758
      • 36.12.3 Chat avec Thread761
      • 36.12.4 Chat avec Thread 100 % orienté objet764
      • 36.12.5 Conclusion768
      • 36.13 Fonctions pour retrouver un ip ou une adresse768
      • 36.14 Compléments770
      • 36.14.1 Attributs d'un Socket770
      • 36.14.2 Méthode fileno771
      • 36.14.3 Méthodes getsockname et getpeername771
      • 36.14.4 Méthode sendfile772
      • 36.14.5 Méthodes gettimeout et settimeout773
      • 36.14.6 Méthode getblocking773
      • 36.14.7 Méthode shutdown773
      • 36.14.8 Erreurs de connexion775
      • 37 Annexe : listes chaînées 777
      • 37.1 Pointeurs777
      • 37.2 Notion de liste simplement chaînée781
      • 37.2.1 Définition781
      • 37.2.2 Méthodes courantes782
      • 37.2.3 Implémentation classique (Pascal)783
      • 37.3 Émulation des listes simplement chaînées784
      • 37.4 Émulation du type list789
      • 37.5 Notion de liste doublement chaînée792
      • 38 Annexe : complément à 2 795
      • 38.1 Préliminaire795
      • 38.2 Complément à 2 dans le cas de 4 bits795
      • 38.3 Trouver la valeur représentée796
      • 38.4 Généralisation à n bits796
      • 38.5 Arithmétique797
      • 38.6 Émulation797
      • 38.7 Involution799
      • 38.8 Petite astuce800
      • 38.9 Retour à Python800
      • 38.10 Opérateur ~ d'inversion801
      • 38.11 Réciproques de bin, oct et hex801
      • 39 Annexe : module urllib 805
      • 39.1 Présentation du paquet805
      • 39.2 Notion de URL805
      • 39.3 Récupérer une ressource sur le web806
      • 39.4 Requête HTTP GET806
      • 39.5 Requête HTTP POST808
      • 39.5.1 Introduction808
      • 39.5.2 Requête écrite à la main809
      • 39.5.3 Fonction Request810
      • 39.6 Exemple amusant811
      • 39.7 Entête813
      • 39.8 Attributs d'un objet requête814
      • 39.9 Attributs d'un objet réponse816
      • 39.10 Gestion des erreurs817
      • 39.11 Autres modules819
      • Bibliographie 821
      • Index 823

  • Origine de la notice:
    • Electre
  • Disponible - 681.234 GOM

    Niveau 3 - Informatique