Skip to main content

Constructeurs de classe

Class Constructors in Python

L'instanciation d'objet est un concept fondamental dans la programmation orientée objet qui se réfère au processus de création de nouveaux objets à partir d'une classe. Ce processus implique l'utilisation de constructeurs, qui sont des méthodes spéciales définissant comment les nouveaux objets sont initialisés. Cet article décrit comment instancier un objet en Python et fournit des exemples de comment créer et utiliser ces objets dans votre code.

Explorer les constructeurs de classe en Python

Un constructeur de classe en Python est une méthode spéciale qui est exécutée lorsqu'un objet d'une classe est instancié. Il est utilisé pour initialiser les attributs de la classe. La méthode constructeur en Python est appelée __init__() et elle est définie à l'intérieur de la classe.

Comment instancier une classe Python

Explorons comment instancier une classe en Python. Pour accomplir cela, nous devons réaliser l'instanciation de classe en Python en créant une instance de la classe qui invoque sa méthode constructeur. Voici un exemple d'une classe simple et comment instancier un objet de cette classe.

class Recipe:
    def __init__(self, name, ingredients):
        self.name = name
        self.ingredients = ingredients

# Instantiate a Recipe object
my_recipe = Recipe("Spaghetti Bolognese", ["spaghetti", "tomato sauce", "ground beef"])

# Access the object's attributes
print("Recipe Name:", my_recipe.name)
print("Ingredients:", my_recipe.ingredients)

Dans l'exemple ci-dessus, la classe Recipe possède un constructeur qui définit les attributs name et ingredients pour chaque nouvel objet qui est instancié. L'objet my_recipe est instancié avec le nom "Spaghetti Bolognese" et une liste d'ingrédients. Les instructions d'impression afficheront Recipe Name: Spaghetti Bolognese et Ingredients: ['spaghetti', 'sauce tomate', 'viande hachée'].

Héritage et Constructeurs en Python

En Python, les constructeurs jouent un rôle crucial dans l'héritage des classes, permettant aux classes enfants d'hériter et d'étendre les attributs et comportements des classes parents.

Bases de l'Héritage des Constructeurs

Les classes enfants héritent du constructeur de leur classe parente, ce qui leur permet de réutiliser la logique d'initialisation du parent. Par exemple :

class Vehicle:
    def __init__(self, make, model):
        self.make = make
        self.model = model

class Car(Vehicle):
    def __init__(self, make, model, year):
        super().__init__(make, model)
        self.year = year

Dans cet exemple, la classe Car hérite de Vehicle et étend ses attributs.

Surcharge du Constructeur

Les classes enfants peuvent également remplacer le constructeur de la classe parente pour personnaliser l'initialisation :

class Bike(Vehicle):
    def __init__(self, make, model, wheel_count):
        super().__init__(make, model)
        self.wheel_count = wheel_count

Classes de Base Abstraites

Les classes de base abstraites vous permettent d'imposer des modèles d'initialisation dans une hiérarchie de classes. Veuillez vous référer à la page des classes abstraites pour en lire plus.

Plongée dans le processus de Python d'instanciation d'objets

Instancier un objet, en Python, signifie créer une instance d'une classe. Lorsque vous créez une instance d'une classe, vous instanciez l'objet. En Python, le processus d'instanciation d'objets implique la création et l'initialisation des objets.

Pour instancier une classe Python, vous devez utiliser la méthode constructeur, qui est la méthode __init__(). La méthode constructeur initialise les attributs ou propriétés d'un objet.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person1 = Person("John", 25)
print(person1.name)
print(person1.age)

Dans cet exemple, nous avons défini une classe appelée Person avec deux attributs, name et age. Nous avons instancié un objet person1 et passé deux arguments à la méthode constructeur. Enfin, nous avons imprimé les valeurs des attributs name et age.

class Employee:
    def __init__(self, firstname, lastname, salary):
        self.firstname = firstname
        self.lastname = lastname
        self.salary = salary

    def get_fullname(self):
        return self.firstname + " " + self.lastname

employee1 = Employee("Jane", "Doe", 50000)
print(employee1.firstname)
print(employee1.get_fullname())
print(employee1.salary)

Dans cet exemple, nous avons défini une classe appelée Employee avec trois attributs, firstname, lastname et salary. Nous avons instancié un objet employee1 et passé trois arguments à la méthode du constructeur. Finalement, nous avons imprimé les valeurs des attributs firstname, get_fullname() et salary.

En Python, instancier des objets est une manière puissante et flexible de créer des objets avec des comportements et des attributs spécifiques.

Initialiser des objets en utilisant la méthode __init__()

La méthode __init__() est utilisée dans les classes Python pour initialiser les objets nouvellement créés. Elle est automatiquement appelée lorsqu'un objet est créé en utilisant le constructeur de la classe.

Voici un exemple de classe avec une méthode __init__():

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p1 = Person("Alice", 25)
print(p1.name)  ### Output Alice

print(p1.age)  ### Output 25

Dans cet exemple, la classe Person possède une méthode init qui prend deux arguments : name et age. Lorsque vous créez un nouvel objet Person, vous passez des valeurs pour ces arguments, et la méthode __init__() définit les variables d'instance correspondantes.

Vous pouvez également avoir des arguments optionnels ou par défaut dans la méthode __init__():

class Rectangle:
    def __init__(self, width=0, height=0):
        self.width = width
        self.height = height

r1 = Rectangle()
print(r1.width)  ### Output 0

print(r1.height)  ### Output 0

r2 = Rectangle(10, 20)
print(r2.width)  ### Output 10

print(r2.height)  ### Output 20

Dans cet exemple, la classe Rectangle possède une méthode __init__() qui prend deux arguments optionnels : width et height. Si aucun argument n'est fourni, les valeurs par défaut de 0 sont utilisées.

Personnalisation de l'initialisation d'objet en Python

En Python, la méthode __init__() est appelée lorsqu'un objet d'une classe est créé. Elle est utilisée pour initialiser les attributs de l'objet. Cependant, il se peut que nous ayons besoin de personnaliser l'initialisation de l'objet en spécifiant nos propres paramètres. Ceci peut être réalisé en utilisant les méthodes suivantes :

Création d'une classe Python sans __init__()

Une façon de personnaliser l'initialisation de l'objet est de définir une méthode personnalisée qui initialise les attributs. Cette méthode peut prendre des paramètres qui sont utilisés pour définir les valeurs des attributs. Voici un exemple :

class Car:
    def set_values(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

my_car = Car()
my_car.set_values('Toyota', 'Camry', 2022)
print(my_car.make)  # Output: Toyota

Dans cet exemple, nous avons défini une méthode personnalisée set_values() pour initialiser les attributs make, model et year. Nous avons ensuite appelé cette méthode sur un objet de la classe Car pour définir les valeurs des attributs.

Création de Classe avec __init__()

Une autre façon de personnaliser l'initialisation d'objet est d'utiliser des attributs au niveau de la classe. Ces attributs peuvent être définis dans la définition de la classe et utilisés pour initialiser les attributs de l'objet. Voici un exemple :

class Car:
    make = ''
    model = ''
    year = 0

    def __init__(self):
        self.make = Car.make
        self.model = Car.model
        self.year = Car.year

my_car = Car()
my_car.make = 'Toyota'
my_car.model = 'Camry'
my_car.year = 2022
print(my_car.make)  # Output: Toyota

Dans cet exemple, nous avons défini make, model et year comme attributs de niveau classe et avons défini leurs valeurs par défaut sur une chaîne vide et 0. Nous avons ensuite utilisé ces attributs pour initialiser les attributs de l'objet dans la méthode __init__(). Nous pouvons plus tard modifier les valeurs des attributs de l'objet comme dans l'exemple précédent.

Création d'un objet de classe Python avec des initialiseurs flexibles

La programmation orientée objet nous permet de créer des objets avec différentes propriétés. Nous pouvons initialiser un objet avec des propriétés fixes ou flexibles en passant différents arguments au constructeur. En Python, nous pouvons utiliser la méthode __init__() pour initialiser un objet avec des propriétés flexibles.

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

rect = Rectangle(5, 10)
print(rect.width)   # Output: 5
print(rect.height)  # Output: 10

Dans l'exemple ci-dessus, nous avons initialisé l'objet Rectangle avec des propriétés fixes width et height. L'objet renvoyé par le constructeur aura toujours les mêmes propriétés.

class Circle:
    def __init__(self, radius, color='red', border=None):
        self.radius = radius
        self.color = color
        self.border = border

circle = Circle(5)
print(circle.radius)  # Output: 5
print(circle.color)   # Output: red
print(circle.border)  # Output: None

Dans l'exemple ci-dessus, nous avons initialisé l'objet Circle avec des propriétés flexibles radius, color et border. Nous avons passé seulement un argument radius au constructeur, mais nous avons également spécifié des valeurs par défaut pour color et border. Cela nous permet de créer un objet Circle avec seulement un argument, ou trois arguments, ou tout nombre d'arguments intermédiaire.

Création d'objet en utilisant la méthode __new__()

La méthode __new__() est utilisée en Python pour créer des objets de manière dynamique. Elle permet au développeur de créer un objet de classe en utilisant le nom de la classe, et ensuite vous pouvez ajouter des attributs après l'init de la classe Python.

class Person:
    pass

dave = Person.__new__(Person)
dave.name = "Dave"
dave.age = 25

print(dave.name)

Dans l'exemple ci-dessus, nous créons une classe appelée Person puis nous utilisons la méthode .new() pour créer un objet appelé dave. Nous ajoutons ensuite les attributs name et age à cet objet après l'initialisation.

class Car:
    def __init__(self, model, make):
        self.model = model
        self.make = make

car = Car.__new__(Car)
car.__init__("Corvette", "Chevrolet")
car.color = "red"

print(car.color)

Dans cet exemple, nous créons une classe appelée Car et définissons ses attributs lors de l'initialisation en utilisant __init__(). Nous créons ensuite un objet appelé car en utilisant la méthode __new__() et l'initialisons avec les attributs de modèle et de marque. Enfin, nous ajoutons l'attribut color à l'objet car après l'initialisation.

Contribuez avec nous!

N'hésitez pas à contribuer aux tutoriels Python sur GitHub : créez un fork, mettez à jour le contenu et émettez une pull request.

Profile picture for user AliaksandrSumich
Python engineer, expert in third-party web services integration.
Mise à jour : 03/05/2024 - 22:51
Profile picture for user angarsky
Examiné et approuvé