Introduction
Dans ce laboratoire, vous apprendrez à vérifier si un objet possède une certaine méthode en Python. Le laboratoire porte sur les méthodes d'objet, en mettant l'accent sur la manière dont elles encapsulent le comportement au sein des objets pour un code organisé et réutilisable.
Vous explorerez la classe Dog avec des méthodes telles que __init__, bark et get_name, en créant des instances et en appelant ces méthodes. Le laboratoire vous guidera ensuite dans l'utilisation de hasattr() et callable() pour déterminer si un objet possède une méthode spécifique. Enfin, vous comprendrez l'ordre de résolution des méthodes (Method Resolution Order - MRO).
Apprendre les méthodes d'objet
Dans cette étape, vous allez apprendre les méthodes d'objet en Python. Les méthodes sont des fonctions associées aux objets. Elles servent à effectuer des opérations sur les données de l'objet. Comprendre les méthodes d'objet est essentiel pour travailler avec les objets et les classes en Python.
Commençons par créer une simple classe appelée Dog :
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return "Woof!"
def get_name(self):
return self.name
Créez un fichier nommé dog.py dans votre répertoire ~/project en utilisant l'éditeur VS Code. Copiez et collez le code ci-dessus dans le fichier dog.py.
Cette classe a trois méthodes :
__init__: C'est la méthode constructeur. Elle est appelée lorsqu'un nouvel objet de la classe est créé. Elle initialise les attributs de l'objet.bark: Cette méthode retourne la chaîne de caractères "Woof!".get_name: Cette méthode retourne le nom du chien.
Maintenant, créons un objet de la classe Dog et appelons ses méthodes. Créez un nouveau fichier nommé main.py dans le répertoire ~/project :
from dog import Dog
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.bark())
print(my_dog.get_name())
Enregistrez le fichier main.py.
Pour exécuter le script main.py, ouvrez votre terminal et accédez au répertoire ~/project :
cd ~/project
Ensuite, exécutez le script en utilisant la commande python :
python main.py
Vous devriez voir la sortie suivante :
Woof!
Buddy
Dans cet exemple, my_dog est un objet de la classe Dog. Nous appelons les méthodes bark et get_name sur l'objet my_dog en utilisant la notation pointée (.).
Les méthodes d'objet vous permettent d'encapsuler le comportement au sein des objets, rendant votre code plus organisé et réutilisable. Elles font partie essentielle de la programmation orientée objet en Python.
Vérifier avec hasattr() et callable()
Dans cette étape, vous apprendrez à utiliser les fonctions hasattr() et callable() en Python. Ces fonctions sont utiles pour inspecter les objets et déterminer s'ils ont certains attributs ou méthodes.
hasattr(object, attribute_name): Cette fonction vérifie si un objet a un attribut donné. Elle retourneTruesi l'attribut existe etFalsesinon.callable(object): Cette fonction vérifie si un objet est appelable (c'est-à-dire qu'il peut être appelé comme une fonction). Elle retourneTruesi l'objet est appelable etFalsesinon.
Continuons avec la classe Dog de l'étape précédente. Ouvrez le fichier dog.py dans votre répertoire ~/project en utilisant l'éditeur VS Code. Le contenu devrait être :
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return "Woof!"
def get_name(self):
return self.name
Maintenant, créons un nouveau fichier nommé check_methods.py dans le répertoire ~/project pour démontrer l'utilisation de hasattr() et callable() :
from dog import Dog
my_dog = Dog("Buddy", "Golden Retriever")
print(hasattr(my_dog, "name"))
print(hasattr(my_dog, "bark"))
print(hasattr(my_dog, "age"))
print(callable(my_dog.bark))
print(callable(my_dog.name))
Enregistrez le fichier check_methods.py.
Dans cet exemple :
hasattr(my_dog, "name")vérifie si l'objetmy_doga un attribut nommé"name". Elle retourneraTruecar la classeDoga un attributname.hasattr(my_dog, "bark")vérifie si l'objetmy_doga un attribut nommé"bark". Elle retourneraTruecar la classeDoga une méthodebark.hasattr(my_dog, "age")vérifie si l'objetmy_doga un attribut nommé"age". Elle retourneraFalsecar la classeDogn'a pas d'attributage.callable(my_dog.bark)vérifie si l'attributmy_dog.barkest appelable (c'est-à-dire qu'il s'agit d'une méthode). Elle retourneraTruecarbarkest une méthode.callable(my_dog.name)vérifie si l'attributmy_dog.nameest appelable. Elle retourneraFalsecarnameest un attribut de type chaîne de caractères, pas une méthode.
Pour exécuter le script check_methods.py, ouvrez votre terminal et accédez au répertoire ~/project :
cd ~/project
Ensuite, exécutez le script en utilisant la commande python :
python check_methods.py
Vous devriez voir la sortie suivante :
True
True
False
True
False
Ces fonctions sont utiles pour écrire un code plus robuste et flexible qui peut gérer différents types d'objets et d'attributs.
Comprendre l'ordre de résolution des méthodes (MRO)
Dans cette étape, vous allez apprendre l'ordre de résolution des méthodes (Method Resolution Order - MRO) en Python. Le MRO est l'ordre dans lequel Python recherche une méthode dans une hiérarchie de classes. Il est particulièrement important lorsqu'il s'agit d'héritage multiple.
Créons un nouvel ensemble de classes pour illustrer le MRO. Créez un fichier nommé animal.py dans votre répertoire ~/project en utilisant l'éditeur VS Code :
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return "Generic animal sound"
class Mammal(Animal):
def speak(self):
return "Generic mammal sound"
class Dog(Mammal):
def speak(self):
return "Woof!"
class Cat(Mammal):
def speak(self):
return "Meow!"
Enregistrez le fichier animal.py.
Maintenant, créons un nouveau fichier nommé mro_example.py dans le répertoire ~/project pour démontrer le MRO :
from animal import Animal, Mammal, Dog, Cat
my_dog = Dog("Buddy")
my_cat = Cat("Whiskers")
print(my_dog.speak())
print(my_cat.speak())
Enregistrez le fichier mro_example.py.
Dans cet exemple :
Animalest la classe de base avec une méthodespeak.Mammalhérite deAnimalet remplace la méthodespeak.Doghérite deMammalet remplace la méthodespeak.Cathérite deMammalet remplace la méthodespeak.
Lorsque vous appelez my_dog.speak(), Python cherche d'abord la méthode speak dans la classe Dog. S'il ne la trouve pas là, il la cherche dans la classe Mammal, puis dans la classe Animal. Cet ordre est déterminé par le MRO.
Pour exécuter le script mro_example.py, ouvrez votre terminal et accédez au répertoire ~/project :
cd ~/project
Ensuite, exécutez le script en utilisant la commande python :
python mro_example.py
Vous devriez voir la sortie suivante :
Woof!
Meow!
Maintenant, explorons un exemple plus complexe avec de l'héritage multiple. Créez un nouveau fichier nommé mro_complex.py dans le répertoire ~/project :
class A:
def method(self):
return "A"
class B(A):
def method(self):
return "B"
class C(A):
def method(self):
return "C"
class D(B, C):
pass
d = D()
print(d.method())
print(D.mro())
Enregistrez le fichier mro_complex.py.
Dans cet exemple :
- La classe
Dhérite à la fois deBet deC. BetChéritent tous deux deA.- La méthode
methodest définie dans les trois classesA,BetC.
Pour exécuter le script mro_complex.py, ouvrez votre terminal et accédez au répertoire ~/project :
cd ~/project
Ensuite, exécutez le script en utilisant la commande python :
python mro_complex.py
Vous devriez voir la sortie suivante :
B
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
La sortie B indique que la méthode method de la classe B est appelée. La méthode D.mro() retourne un tuple représentant l'ordre de résolution des méthodes pour la classe D. Dans ce cas, le MRO est D -> B -> C -> A -> object. Cela signifie que lorsque vous appelez d.method(), Python cherche d'abord la méthode dans la classe D, puis dans la classe B, puis dans la classe C, puis dans la classe A, et enfin dans la classe de base object.
Comprendre le MRO est essentiel pour prédire le comportement de votre code lorsqu'il utilise l'héritage, en particulier l'héritage multiple.
Résumé
Dans ce laboratoire (lab), la première étape consiste à comprendre les méthodes d'objet en Python. Elle introduit le concept de méthodes comme des fonctions associées aux objets, essentielles pour effectuer des opérations sur les données des objets. Une classe Dog est créée avec des méthodes telles que __init__, bark et get_name pour démontrer comment les méthodes encapsulent le comportement au sein des objets.
Le laboratoire vous guide ensuite dans la création d'une instance de la classe Dog et l'appel de ses méthodes à l'aide de la notation pointée, illustrant ainsi comment les méthodes d'objet contribuent à un code organisé et réutilisable en programmation orientée objet.



