OUJOOD.COM
Définir une classe
Pour définir une classe, vous utilisez le mot-clé class suivi du nom de la classe.Exemple : l'exemple suivant définit une classe Personne :
class Personne :
pass
Comme vous le costatez, nous avons définit la classe de la même maniére qu'une fonction.Pour créer un objet à partir de la classe Personne, vous utilisez le nom de la classe suivi de parenthèses (), comme pour appeler une fonction :
Voir plus sur les fonctions dans notre tutoriel
person = Personne()
Dans cet exemple, la person est une instance de la classe Personne.
Les classes sont appelables (c'est-à-dire qu'on les appale lorsque l'on a besoin).
Définir des attributs d'instance
Python est dynamique. Cela signifie que vous pouvez ajouter un attribut à l'instance d'une classe de manière dynamique au moment de l'exécution.Exemple : l'exemple suivant ajoute l'attribut name à l'objet person :
person.name = 'Anne'
Toutefois, si vous créez un autre objet Personne, le nouvel objet n'aura pas l'attribut name.
Pour définir et initialiser un attribut pour toutes les instances d'une classe, vous utilisez la méthode __init__ lors de la définition de la classe.
L'exemple suivant définit la classe Personne avec deux attributs d'instance : name et age :
class Personne :
def __init__(self, name, age) :
self.name = nom
self.age = age
Lorsque vous créez un objet Personne, Python appelle automatiquement la méthode __init__ pour initialiser les attributs de l'instance. Dans la méthode __init__, le mot-clé self est l'instance de la classe Personne.L'exemple suivant crée un objet Personne nommé person :
person = Personne('Anne', 25)
L'objet person possède maintenant les attributs name et age. Pour accéder à un attribut d'instance, vous utilisez la notation point.
Exemple, dans le code suivant on utilise les valeur de les attributs name et age de l'objet person :
class Personne :
def __init__(self, nom, age) :
self.name = nom
self.age = age
person = Personne('Anne', 25)
print(f"Salut, {person.name} tu a {person.age} ans.")
Définir des méthodes d'instance
L'exemple suivant ajoute une méthode d'instance appelée saluer() à la classe Personne :
classe Personne :
def __init__(self, nom, age) :
self.name = nom
self.age = age
def saluer(self) :
return f"Salut {self.name} vous avez {self.age} ans. "
Pour appeler une méthode d'instance, vous utilisez également la notation par points.Exemple
class Personne :
def __init__(self, nom, age) :
self.name = nom
self.age = age
def saluer(self) :
return f"Salut {self.name} vous avez {self.age} ans."
person = Personne('Anne', 25)
print(person.saluer())
Sortie :Salut Anne vous avez 25 ans.
Définir les attributs de classe
Contrairement aux attributs d'instance, les attributs de classe sont partagés par toutes les instances de la classe. Ils sont utiles si vous voulez définir des constantes de classe ou des variables qui gardent la trace du nombre d'instances d'une classe.Exemple, l'exemple suivant définit l'attribut de classe compteur dans la classe Personne :
classe Personne :
compteur = 0
def __init__(self, nom, age) :
self.name = nom
self.age = age
def saluer(self) :
return f"Salut {self.name} vous avez {self.age} ans."
Vous pouvez accéder à l'attribut compteur de la classe Personne :Personne.compteur
Ou à partir de n'importe quelle instance de la classe Personne :
person = Personne('Anne',25)
person.compteur
Pour rendre la variable compteur plus utile, vous pouvez augmenter sa valeur de un une fois qu'un objet est créé. Pour ce faire, vous augmentez l'attribut de classe compteur dans la méthode __init__ :
class Personne :
compteur = 0
def __init__(self, nom, age) :
self.name = nom
self.age = age
Personne.compteur += 1
def saluer(self) :
return f"Salut, {self.name} vous avez {self.age} ans."
L'exemple suivant crée deux instances de la classe Personne et affiche la valeur du compteur :
class Personne :
compteur = 0
def __init__(self, nom, age) :
self.name = nom
self.age = age
Personne.compteur += 1
def saluer(self) :
return f"Salut, {self.name} vous avez {self.age} ans."
p1 = Personne('Anne', 25)
p2 = Personne('Jane', 22)
print(f"{Personne.compteur} instences ont été crées")
Résultat :2 instences ont été crées
Définir une méthode de classe
Comme un attribut de classe, une méthode de classe est partagée par toutes les instances de la classe. Le premier argument d'une méthode de classe est la classe elle-même. Par convention, son nom est cls. Python passe automatiquement cet argument à la méthode de classe. Vous pouvez également utiliser le décorateur @classmethod pour décorer une méthode de classe.L'exemple suivant définit une méthode de classe qui renvoie un objet anonyme de type Personne :
classe Personne :
compteur = 0
def __init__(self, name, age) :
self.name = nom
self.age = age
Person.compteur += 1
def saluer(self) :
return f"Salut, {self.name} vous avez {self.age} ans."
@classmethod
def create_anonymous(cls) :
return Personne('Anonyme', 22)
L'exemple suivant montre comment appeler la méthode de classe create_anonymous() :
class Personne :
compteur = 0
def __init__(self, nom, age) :
self.name = nom
self.age = age
Personne.compteur += 1
def saluer(self) :
return f"Salut, {self.name} vous avez {self.age} ans."
@classmethod
def create_anonymous(cls) :
return Personne('Anonyme', 22)
anonymous = Personne.create_anonymous()
print(anonymous.name)
print(anonymous.age)
Définir une méthode statique
Une méthode statique n'est pas liée à une classe ou à des instances de cette classe. En Python, vous utilisez les méthodes statiques pour regrouper des fonctions logiquement liées dans une classe. Pour définir une méthode statique, vous utilisez le sélecteur @staticmethod.Exemple : l'exemple suivant définit une classe Temperature_convertisseur qui possède deux méthodes statiques permettant de convertir les valeurs Celsius en Fahrenheit et vice versa :
class Temperature_convertisseur:
@staticmethod
def celsius_en_fahrenheit(c):
return 9 * c / 5 + 32
@staticmethod
def fahrenheit_en_celsius(f):
return 5 * (f - 32) / 9
Pour appeler une méthode statique, vous utilisez la syntaxe :ClassName.static_method_name() .
Exemple :
f = Temperature_convertisseur.celsius_en_fahrenheit(30) print(f)
Remarquez que Python ne passe pas implicitement une instance (self) ainsi qu'une classe (cls) comme premier argument d'une méthode statique.
Héritage simple
Une classe peut réutiliser une autre classe en héritant de ses attributs et méthodes. Lorsqu'une classe enfant hérite d'une classe parent, la classe enfant peut accéder aux attributs et aux méthodes de la classe parent.Exemple, vous pouvez définir une classe Employé qui hérite de la classe Personne :
class Personne :
def __init__(self, nom, age) :
self.name = nom
self.age = age
def saluer(self) :
return f"Salut, {self.name} vous avez {self.age} ans."
class Employe(Personne):
def __init__(self, nom, age, job_title) :
super().__init__(nom, age)
self.job_title = job_title
person = Personne('Anne', 25)
print(person.saluer())
employe=Employe('Anne', 25, 'développeur python')
print(employe.saluer())
A l'intérieur de la classe Employe, la méthode __init__ appelle la méthode __init__method de la classe Personne pour initialiser les attributs nom et age. La méthode super() permet à une classe enfant d'accéder à une méthode de la classe parent.La classe Employe élargit la classe Personne en ajoutant un attribut supplémentaire appelé job_title.
Nous n'avons pas définit les attributs nom et age car la classe Employe les a hérité de la classe parent Perssone.
La classe Personne est la classe parent tandis que la classe Employe est une classe enfant.
Pour remplacer la méthode saluer() de la classe Person, vous pouvez définir la méthode saluer() de la classe Employe comme suit :
classe Employe( Personne) :
def __init__(self, name, age, job_title) :
super().__init__(nom, âge)
self.job_title = job_title
def saluer(self) :
return super().saluer() + f" Je suis un {self.job_title}."
La méthode saluer() de l'employé est également appelée la méthode saluer() de la classe Personne.L'exemple suivant crée une nouvelle instance de la classe Employe et appelle la méthode saluer() :
employee = Employee('John', 25, 'développeur Python')
print(employe.saluer())
Dans ce tutoriel, vous avez appris un bref aperçu de la programmation orientée objet en Python.