You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

177 lines
3.6 KiB

  1. Rappels
  2. =======
  3. // TODO: drop?
  4. .. note::
  5. ceci est surtout un rappel du chapitre 11. N'hésitez pas à vous y
  6. reporter si les exemples de code ne vous paraissent pas clairs.
  7. Classes vides
  8. -------------
  9. Définition::
  10. class MaClasse:
  11. pass
  12. Instanciation::
  13. instance_1 = MaClasse()
  14. Attributs
  15. ---------
  16. Un attribut est une variable *à l'intérieur* d'autre chose (par exemple une instance de classe).
  17. La syntaxe consiste en l'instance à gauche et l'attribut à droite après un point::
  18. >>> mon_instance = MaClasse()
  19. # création de l'attribut `x` dans mon_instance:
  20. >>> mon_instance.x = 42
  21. # accès à l'attribut `x` dans mon_instance:
  22. >>> mon_instance.x
  23. 42
  24. Méthodes
  25. --------
  26. Une méthode est une fonction définie à l'intérieur d'une classe:
  27. Définition::
  28. class MaClasse:
  29. def ma_méthode(self):
  30. return 42
  31. Les méthodes sont des attributs des instances de classes::
  32. class MaClasse:
  33. def ma_méthode(self):
  34. return 42
  35. >>> ma_méthode()
  36. Erreur
  37. >>> mon_instance = MaClasse()
  38. >>> mon_instance.ma_méthode()
  39. 42
  40. self
  41. ----
  42. `self` *prend la valeur de l'instance courante* quand la méthode est appelée.::
  43. class MaClasse:
  44. def affiche_attribut_x(self):
  45. print(self.x)
  46. >>> mon_instance = MaClasse()
  47. >>> mon_instance.x = 42
  48. >>> mon_instance.affiche_attribut_x()
  49. 42
  50. On peut aussi *créer* des attributs dans une méthode::
  51. class MaClasse:
  52. def crée_attribut_x(self):
  53. self.x = 42
  54. def affiche_attribut_x(self):
  55. print(self.x)
  56. >>> mon_instance = MaClasse()
  57. >>> mon_instance.affiche_attribut_x()
  58. # Erreur: `mon_instance` n'a pas d'attribut `x`
  59. >>> mon_instance.crée_attribut_x()
  60. >>> mon_instance.affiche_attribut_x()
  61. 42
  62. Méthodes avec arguments
  63. ------------------------
  64. .. code-block::
  65. class MaClasse
  66. def crée_attribut_x(self, valeur_de_x):
  67. self.x = valeur_de_x
  68. def affiche_attribut_x(self);
  69. print(self.x)
  70. >>> mon_instance = MaClasse()
  71. >>> mon_instance.crée_attribut_x(42)
  72. >>> mon_instance.affiche_attribut_x()
  73. 42
  74. Méthodes appelant d'autres méthodes
  75. ------------------------------------
  76. .. code-block::
  77. class MaClasse:
  78. def méthode_1(self):
  79. print("démarrage de la méthode 1")
  80. print("la méthode 1 affiche bonjour")
  81. print("bonjour")
  82. print("fin de la méthode 1")
  83. def méthode_2(self):
  84. print("la méthode 2 appelle la méthode 1")
  85. self.méthode_1()
  86. print("fin de la méthode 2")
  87. >>> mon_instance = MaClasse()
  88. >>> mon_instance.méthode_2()
  89. .. code-block::
  90. la méthode 2 appelle la méthode 1
  91. démarrage de la méthode 1
  92. la méthode 1 affiche bonjour
  93. bonjour
  94. fin de la méthode 1
  95. fin de la méthode 2
  96. Constructeur sans arguments
  97. ---------------------------
  98. Un constructeur en Python désigne la méthode nomée ``__init__``,
  99. quand celle-ci existe.
  100. La méthode ``__init__`` est appelée automatiquement quand la
  101. classe est instanciée::
  102. class MaClasse:
  103. def __init__(self):
  104. self.x = 1
  105. self.y = 2
  106. >>> mon_instance = MaClasse()
  107. >>> mon_instance.x
  108. 1
  109. >>> mon_instance.y
  110. 2
  111. Constructeur avec arguments
  112. ----------------------------
  113. La méthode ``__init__`` peut avoir des arguments,
  114. dans ce cas, ceux ci doivent être fournis
  115. lors de l'instanciation::
  116. class MaClasse:
  117. def __init__(self, x, y):
  118. self.x = x
  119. self.y = y
  120. >>> mon_instance = MaClasse(3, 4)
  121. >>> mon_instance.x
  122. 3
  123. >>> mon_instance.y
  124. 4