您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
此仓库已存档。您可以查看文件和克隆,但不能推送或创建工单/合并请求。

01-rappels.rst 3.6 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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. ```
  41. self
  42. ----
  43. `self` *prend la valeur de l'instance courante* quand la méthode est appelée.::
  44. class MaClasse:
  45. def affiche_attribut_x(self):
  46. print(self.x)
  47. >>> mon_instance = MaClasse()
  48. >>> mon_instance.x = 42
  49. >>> mon_instance.affiche_attribut_x()
  50. 42
  51. On peut aussi *créer* des attributs dans une méthode::
  52. class MaClasse:
  53. def crée_attribut_x(self):
  54. self.x = 42
  55. def affiche_attribut_x(self):
  56. print(self.x)
  57. >>> mon_instance = MaClasse()
  58. >>> mon_instance.affiche_attribut_x()
  59. # Erreur: `mon_instance` n'a pas d'attribut `x`
  60. >>> mon_instance.crée_attribut_x()
  61. >>> mon_instance.affiche_attribut_x()
  62. 42
  63. Méthodes avec arguments
  64. ------------------------
  65. .. code-block::
  66. class MaClasse
  67. def crée_attribut_x(self, valeur_de_x):
  68. self.x = valeur_de_x
  69. def affiche_attribut_x(self);
  70. print(self.x)
  71. >>> mon_instance = MaClasse()
  72. >>> mon_instance.crée_attribut_x(42)
  73. >>> mon_instance.affiche_attribut_x()
  74. 42
  75. Méthodes appelant d'autres méthodes
  76. ------------------------------------
  77. .. code-block::
  78. class MaClasse:
  79. def méthode_1(self):
  80. print("démarrage de la méthode 1")
  81. print("la méthode 1 affiche bonjour")
  82. print("bonjour")
  83. print("fin de la méthode 1")
  84. def méthode_2(self):
  85. print("la méthode 2 appelle la méthode 1")
  86. self.méthode_1()
  87. print("fin de la méthode 2")
  88. >>> mon_instance = MaClasse()
  89. >>> mon_instance.méthode_2()
  90. .. code-block::
  91. la méthode 2 appelle la méthode 1
  92. démarrage de la méthode 1
  93. la méthode 1 affiche bonjour
  94. bonjour
  95. fin de la méthode 1
  96. fin de la méthode 2
  97. Constructeur sans arguments
  98. ---------------------------
  99. Un constructeur en Python désigne la méthode nomée ``__init__``,
  100. quand celle-ci existe.
  101. La méthode ``__init__`` est appelée automatiquement quand la
  102. classe est instanciée::
  103. class MaClasse:
  104. def __init__(self):
  105. self.x = 1
  106. self.y = 2
  107. >>> mon_instance = MaClasse()
  108. >>> mon_instance.x
  109. 1
  110. >>> mon_instance.y
  111. 2
  112. Constructeur avec arguments
  113. ----------------------------
  114. La méthode ``__init__`` peut avoir des arguments,
  115. dans ce cas, ceux ci doivent être fournis
  116. lors de l'instanciation::
  117. class MaClasse:
  118. def __init__(self, x, y):
  119. self.x = x
  120. self.y = y
  121. >>> mon_instance = MaClasse(3, 4)
  122. >>> mon_instance.x
  123. 3
  124. >>> mon_instance.y
  125. 4