réez et utilisez des objets Python ======
===== Instanciez un objet =====
Vous vous souvenez de not... ceci :
<code python>
class Rectangle:
def __init__(self, length, width, color="red"):
se... orrespondent aux paramètres du constructeur. Ceci inclut les positions des paramètres – dans notre con... e deuxième paramètre donné.
</note>
Lorsque nous instancions un objet, nous devons habituellement l’a
odèle (ou une recette) qui peut être utilisé pour instancier des objets.
++++
**Voici la différence... ier paramètre. Les fonctions, quant à elles, sont indépendantes des classes.
++++
**Parmi ces signat... structeur, laquelle est correcte ?**
- %%def __init__(self name date_of_birth)%%
- %%def init(self, name, date_of_birth)%%
- %%def __init__(name, d
tes** – où les données ont une position et sont **indexables** – et des **dictionnaires** – où on attr... s muables et immuables (en anglais)]] pourra vous intéresser.
</note>
Attendez une seconde, je ne peux pas modifier un entier (int) ? Si je dis que x = 5, je peux paramétrer x par... hon>
class Person:
"""Personne."""
def __init__(self, name):
"""Donne un nom."""
omme ''NameError'', ''ZeroDivisionError'', ou ''IndexError'' – sont toutes des exceptions **intégrées** qui sont lancées par les éléments internes de Python lui-même.
Nous pouvons également lance... on se produit. Dans ce cas, l’exception donne des informations sur l’erreur en elle-même.
Toutes les
dans sa portée (« scope », en anglais), avec une indentation supplémentaire de 4 espaces.
<note>
Un « scope » en Python est défini par le niveau d’indentation. Vous avez déjà écrit des conditions ''if'' et utilisé les indentations pour montrer où le code doit se résoudr... de ''calculate_area'' ci-dessus. Les méthodes d’instance incluent **toujours** « self » en premier p
lass PersonException(Exception):
pass
class InvalidDOBPersonException(PersonException):
pass
try:
raise InvalidDOBPersonException("Invalid Date of Birth")
except PersonException:
print("PersonException caught")
except InvalidDOBPersonException("Invalid Date of Birth"):
return 0
class Square(Shape):
def __init__(self, length):
self.length = length
... e abstraite est **une classe qui ne peut pas être instanciée** – la seule façon de l’utiliser est de c... cle, Carré, Triangle, etc., sans laisser personne instancier une ''Shape''.
<note>
Une classe abstraite peut aussi insister pour qu’une méthode soit implémentée par se
ont généralement plusieurs hiérarchies d’héritage indépendantes pour les classes qui ne partagent **pa... mmes d’héritage, car il n’est pas très utile de l’inclure. Nous discuterons davantage de la modélisati... ""
print("Meow!")
class Talker:
"""Interface qui définit la méthode "say" (dire)."""
... n **Mixin** – nommé ainsi car vous ajoutez (« mix in ») une fonctionnalité nécessaire. Si vous avez pr
toute première ligne de la classe.
Le principal intérêt de l’héritage est d’étendre notre classe de ... Film):
"""Un film en cassette !"""
def __init__(self, name):
"""Initialise le nom et la bande magnetique."""
self.name = name
... es sous-classes lorsque c’est judicieux).
Pour l’instant, supposons que nous sortions uniquement le c
se familiariser** avec un projet et ses éléments internes.
Au final, le fait de structurer son code ... t **partageant un fichier de configuration** (%%__init__.py%%).
Cet %%__init__.py%% peut contenir n’importe quel code d’initialisation, et contient parfois une définition %%__a
ode et des classes provisoires pour modéliser les interactions entre différentes parties de votre syst... le volant pourrait être stocké comme variable à l’intérieur de la voiture. C’est une façon d’imbriquer... qui ferait trop de choses différentes.
==== Les interfaces ====
Dans quelle mesure est-ce que ce code va interagir avec d’autres systèmes et d’autres parties
s retrouver après un long voyage. Pour rendre cet instant unique, vous avez tout préparé : vous compte... ez donc du placard, et suivez méticuleusement les instructions... jusqu'à arriver au résultat !
Ce pr... » d'un plat en cuisine, nous parlerons plutôt d'**instanciation de classe** en programmation orientée ... existant dans le monde. Lorsque nous créons (ou **instancions**) un gâteau à partir de cette recette,
**Une classe de base abstraite** :
- peut être instanciée, mais il faudrait en hériter.
- ne peut pas être instanciée, mais on peut en hériter.
- ne peut pas être instanciée et on ne peut pas en hériter.
++++ Répon... les concepts qui ne peuvent pas exister de façon indépendante. Par exemple, à quoi ressemblerait un a
etic_tape'' et ''rewind()''. A droite, il y a une instance d'un Film avec le ''name: Blade Runner'', ainsi qu'une instance de ''FilmCassette'' avec le ''name: 2001: l... ypes – au chapitre 5.
</note>
<note warning>
À l’inverse, un ''Film'' n’est pas un ''FilmCassette''. ... d()'', nous obtiendrions donc une erreur ! Plus d’informations à ce sujet au chapitre 5.
</note>
Ce t
artir de plans que l’on appelle des **classes** – interagissent pour produire des comportements.
Les ... omposer un problème** en parties plus petites qui interagissent, et découper notre programme en **modu... u sein des programmes. Il existe des **exceptions intégrées** qui nous avertissent quand nous avons fa