Podcast
Questions and Answers
Que se passe-t-il si une méthode increment
ne contient pas de déclaration de retour explicite?
Que se passe-t-il si une méthode increment
ne contient pas de déclaration de retour explicite?
- La méthode retourne la valeur de l'objet modifié.
- Une exception est levée.
- La méthode retourne une erreur de compilation.
- La méthode retourne `None`. (correct)
L'utilisation d'attributs publics est toujours préférable car cela simplifie la modification des attributs depuis l'extérieur de la classe.
L'utilisation d'attributs publics est toujours préférable car cela simplifie la modification des attributs depuis l'extérieur de la classe.
False (B)
Comment peut-on obtenir un comportement différent de celui par défaut lors de la comparaison de deux objets en utilisant l'opérateur ==
en Python?
Comment peut-on obtenir un comportement différent de celui par défaut lors de la comparaison de deux objets en utilisant l'opérateur ==
en Python?
redéfinir la méthode __eq__
Le décorateur ______ est utilisé pour définir une méthode qui est liée à la classe et non à l'instance de la classe.
Le décorateur ______ est utilisé pour définir une méthode qui est liée à la classe et non à l'instance de la classe.
Quelle est la principale différence entre une méthode de classe et une méthode statique?
Quelle est la principale différence entre une méthode de classe et une méthode statique?
Si la méthode __eq__
est définie, mais pas la méthode __ne__
, Python supposera que __ne__
est simplement la négation de __eq__
.
Si la méthode __eq__
est définie, mais pas la méthode __ne__
, Python supposera que __ne__
est simplement la négation de __eq__
.
Dans le contexte des méthodes arithmétiques en Python, quel est le rôle de self
et other
dans la méthode __add__(self, other)
?
Dans le contexte des méthodes arithmétiques en Python, quel est le rôle de self
et other
dans la méthode __add__(self, other)
?
Quelle est la différence entre isinstance()
et type()
lors de la vérification du type d'un objet?
Quelle est la différence entre isinstance()
et type()
lors de la vérification du type d'un objet?
Pour trier une liste d'objets personnalisés en Python, on peut utiliser la fonction sorted()
en conjonction avec la méthode ______ de comparaison.
Pour trier une liste d'objets personnalisés en Python, on peut utiliser la fonction sorted()
en conjonction avec la méthode ______ de comparaison.
Associez les méthodes spéciales aux opérateurs qu'elles permettent de surcharger:
Associez les méthodes spéciales aux opérateurs qu'elles permettent de surcharger:
Que retourne la méthode increment
de la classe Counter
si elle ne contient pas de return
?
Que retourne la méthode increment
de la classe Counter
si elle ne contient pas de return
?
Dans le contexte de la comparaison d'objets, que signifie self
et other
lors de l'appel à la méthode get_travel_distance
avec 12.get_travel_distance(11)
?
Dans le contexte de la comparaison d'objets, que signifie self
et other
lors de l'appel à la méthode get_travel_distance
avec 12.get_travel_distance(11)
?
Que se passe-t-il si vous tentez de définir l'attribut age
d'un objet Individu
à une valeur négative, en utilisant la méthode set_age
?
Que se passe-t-il si vous tentez de définir l'attribut age
d'un objet Individu
à une valeur négative, en utilisant la méthode set_age
?
La comparaison par défaut (==) de deux objets en Python retourne True
si et seulement si les deux objets occupent le même espace mémoire.
La comparaison par défaut (==) de deux objets en Python retourne True
si et seulement si les deux objets occupent le même espace mémoire.
Comment peut-on redéfinir l'égalité entre deux objets en Python?
Comment peut-on redéfinir l'égalité entre deux objets en Python?
La méthode spéciale utilisée pour définir le comportement de l'opérateur <
est ___
.
La méthode spéciale utilisée pour définir le comportement de l'opérateur <
est ___
.
Quelle est la principale utilisation de la méthode de comparaison __lt__
?
Quelle est la principale utilisation de la méthode de comparaison __lt__
?
Lors de la redéfinition de l'addition avec la méthode __add__
, si l'opérande de gauche ne possède pas la méthode __add__
appropriée, Python ne tentera pas d'utiliser la méthode __radd__
de l'opérande de droite.
Lors de la redéfinition de l'addition avec la méthode __add__
, si l'opérande de gauche ne possède pas la méthode __add__
appropriée, Python ne tentera pas d'utiliser la méthode __radd__
de l'opérande de droite.
Comment déclare-t-on une méthode qui appartient à la classe elle-même plutôt qu'à une instance particulière de cette classe?
Comment déclare-t-on une méthode qui appartient à la classe elle-même plutôt qu'à une instance particulière de cette classe?
Faites correspondre les types de méthodes aux descriptions appropriées:
Faites correspondre les types de méthodes aux descriptions appropriées:
Quelle est la conséquence principale de l'utilisation d'attributs publics au lieu d'attributs privés dans une classe?
Quelle est la conséquence principale de l'utilisation d'attributs publics au lieu d'attributs privés dans une classe?
La comparaison par défaut (==) entre deux objets en Python vérifie si les objets ont le même contenu, pas si ils se trouvent au même emplacement mémoire.
La comparaison par défaut (==) entre deux objets en Python vérifie si les objets ont le même contenu, pas si ils se trouvent au même emplacement mémoire.
Si vous souhaitez redéfinir l'opérateur d'addition (+) pour une classe personnalisée, quelle méthode spéciale devez-vous implémenter dans cette classe?
Si vous souhaitez redéfinir l'opérateur d'addition (+) pour une classe personnalisée, quelle méthode spéciale devez-vous implémenter dans cette classe?
Lors de la redéfinition des opérateurs de comparaison, la méthode spéciale _____
est utilisée pour définir le comportement de l'opérateur inférieur à (<).
Lors de la redéfinition des opérateurs de comparaison, la méthode spéciale _____
est utilisée pour définir le comportement de l'opérateur inférieur à (<).
Associez les méthodes spéciales aux opérateurs qu'elles redéfinissent:
Associez les méthodes spéciales aux opérateurs qu'elles redéfinissent:
Quelle est la principale différence entre une méthode de classe et une méthode statique en Python?
Quelle est la principale différence entre une méthode de classe et une méthode statique en Python?
Une méthode statique peut accéder et modifier les attributs d'instance de la classe.
Une méthode statique peut accéder et modifier les attributs d'instance de la classe.
Quel décorateur est utilisé pour définir une méthode de classe en Python?
Quel décorateur est utilisé pour définir une méthode de classe en Python?
Si vous avez deux instances d'une classe, obj1
et obj2
, et qu'une variable de classe var
est modifiée via obj1
, quel sera l'impact sur obj2
?
Si vous avez deux instances d'une classe, obj1
et obj2
, et qu'une variable de classe var
est modifiée via obj1
, quel sera l'impact sur obj2
?
Lors de la définition d'une méthode de classe, le premier argument de cette méthode est conventionnellement nommé _____
.
Lors de la définition d'une méthode de classe, le premier argument de cette méthode est conventionnellement nommé _____
.
Flashcards
Comparaison par défaut (==)
Comparaison par défaut (==)
Renvoie True si les objets correspondent au même espace mémoire.
Méthode de comparaison LT
Méthode de comparaison LT
Méthode spéciale pour définir le comportement de l'opérateur < pour les objets d'une classe.
Méthode add
Méthode add
Permet de redéfinir l'addition (+) pour les objets.
Attributs de classe
Attributs de classe
Signup and view all the flashcards
Méthodes de classe
Méthodes de classe
Signup and view all the flashcards
Méthodes statiques
Méthodes statiques
Signup and view all the flashcards
X = Expression 1 si condition, sinon Expression 2
X = Expression 1 si condition, sinon Expression 2
Signup and view all the flashcards
Fonction isinstance()
Fonction isinstance()
Signup and view all the flashcards
Que font les méthodes de classe?
Que font les méthodes de classe?
Signup and view all the flashcards
Méthode lt
Méthode lt
Signup and view all the flashcards
Deepcopy
Deepcopy
Signup and view all the flashcards
Redéfinir l'égalité (==)
Redéfinir l'égalité (==)
Signup and view all the flashcards
Les méthodes statiques
Les méthodes statiques
Signup and view all the flashcards
Comparaison par default (==)
Comparaison par default (==)
Signup and view all the flashcards
Study Notes
- Cours 4 porte sur la programmation Python.
Quiz
- La méthode
increment
ne retourne rien, elle modifie l'objet en place, c'est un effet de bord, l'objet est modifié mais rien ne sera envoyé. - Dans le deuxième quiz,
self
est égal àI2
etother
est égal àI1
, carI2
précèdeget
, correspondant àself
, etI1
est le paramètre, correspondant àother
. John = individu()
retourne 0 car il n'y a pas de paramètre.John.set_age(3)
remplace l'âge par 3, car 3 est supérieur à 0.John.age = -1
remplace l'âge par -1, ce qui n'est pas conforme au code écrit.- L'utilisation d'attributs publics permet à quiconque de les modifier, il est donc préférable d'utiliser des attributs privés.
X = Expression1 if condition else Expression2
est équivalent à :
if condition:
X = Expression1
else:
X = expression2
Les méthodes de comparaison
- Par défaut, la comparaison (==) de deux objets retourne
True
uniquement s'ils occupent le même espace mémoire (même objet). - Par défaut, l'addition (+) de deux objets n'est pas définie
- Quand on créé des objets, l'égalité est directement définie
- Par défaut, la double égalité est attribuée par défaut.
- Comparaison de deux instances différentes, même avec les mêmes attributs
- les méthodes
isinstance
est nécessaire pour vérifier les operateurs avec une condition if/elif
rend le code plus lisible et intuitif, et adapte automatiquement le comportement des fonctions classiques utilisant les opérateurs.- La redéfinition de l'égalité s'écrit sous la forme
a == b → a.__eq__(b) → a = self b = other
. - Python suppose un lien entre
eq
etne
(__ne__ = not __eq__
), mais on peut imposer un autre comportement en redéfinissant les deux. - Les méthodes sont utilisées pour
==
et!=
, mais aussi pourin
, etc.
Méthode de comparaison LT
- La méthode de comparaison
__lt__
(Less Than, "inférieur à") en Python est une méthode spéciale utilisée pour définir le comportement de l'opérateur<
lorsqu'il est appliqué à des objets d'une classe personnalisée. - Elle permet de comparer deux objets en spécifiant ce qui signifie "être plus petit" pour ces objets.
__lt__
est utile pour :- Trier des objets dans une liste avec
sorted()
oulist.sort()
. - Comparer des objets personnalisés dans des structures de données comme les ensembles ordonnés ou les arbres binaires de recherche.
- Utiliser des objets dans des algorithmes nécessitant un ordre, comme des files de priorité.
- Ces méthodes sont utilisées pour
>=
,<=
,min()
,max()
,sorted()
. - Ainsi, toutes les méthodes qui seront liées à l'opération seront modifiées.
Les méthodes arithmétiques
def __add__(self, other)
permet de redéfinir l'addition sur des objets.- Cette méthode est utilisée pour l'opérateur
+
:x + y ⇒ x.__add__(y)
. - Il ne faut pas oublier de préciser
if instance(other, ...)
- La méthode de l'opérande de gauche est appliquée.
- Si elle existe, elle appelle x.add(y) ; dans la méthode add, self vaut x, other vaut y.
- Si elle existe il appelle y.radd(x) ; dans la méthode radd, self vaut y, other vaut x. Sinon, on créé une exception avec NotImplemented
class MaClasse():
def f(self, x):
# plusieurs manières d'appeler f
o.f(y) # à préférer
# un obj. le nom de la methode(parametre)
type(o).f(o, y)
# ou MaClasse.f(o, y)
#attention à l'héritage
o._class_.f(o, y) # apeler une methode d'instance
L'attribut de classe
- L'attribut de classe est partagé par tous les objets de cette classe.
- Les attributs de classe appartiennent à la classe, pas à une instance particulière.
- Ils sont définis dans le corps de la classe et sont accessibles depuis l'intérieur de la classe, sans
self
, en utilisant le nom de la classe. - Ils sont accessibles depuis l'extérieur de la classe, à moins qu'ils ne soient définis comme privés avec
_
.
Les méthodes de classe
- Les méthodes de classe ne sont pas appelées sur un objet particulier (une instance) mais sur la classe elle-même.
- Elles manipulent typiquement des attributs de classe.
- Elles sont précédées du décorateur
@classmethod
. - Elles prennent en premier argument la classe, que l'on nomme
cls
(similairement àself
pour les méthodes d'instance). - Elles peuvent être appelées à partir de la classe directement.
Les méthodes statiques
- Les méthodes statiques ne dépendent ni d'un objet particulier (d'une instance) ni de la classe.
- Elles sont précédées du décorateur
@staticmethod
. - Elles sont généralement des méthodes utiles « outil » à l'intérieur de la classe.
@staticmethod #ne dep pas de classe ni de l'instance
def _euclidean(x1, y1, x2, y2):
return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
- En règle générale, on utilise des méthodes de classe si on utilise des attributs ou des méthodes de classe, sinon on utilise une méthode statique.
Deepcopy
permet de dupliquer une liste et les objets qu'elles contiennent.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.