Anatomie d’une classe : le constructeur __init__

Introduction à la programmation orientée objet en Python

George Boorman

Curriculum Manager, DataCamp

Méthodes et attributs

  • Les méthodes sont des fonctions définies dans une classe
  • self en premier argument
  • Définir les attributs par affectation
  • Référencer les attributs via self.___
  • Appeler beaucoup de méthodes peut devenir ingérable !
class MyClass:
    # définition de fonction dans une classe
    # premier argument : self
    def my_method1(self, other_args...):
        # faire des choses ici

def my_method2(self, my_attr): # attribut créé par affectation self.my_attr = my_attr ...
Introduction à la programmation orientée objet en Python

Constructeur

  • Ajouter des données à l’objet lors de sa création
  • Le constructeur __init__() est appelé à chaque création d’objet
    • Appelé automatiquement grâce à la syntaxe __methodname__
class Customer:
    def __init__(self, name):
        # Créer l’attribut .name et le définir avec le paramètre name
        self.name = name
        print("The __init__ method was called")
Introduction à la programmation orientée objet en Python

Constructeur

# __init__ est appelé implicitement 
cust = Customer("Lara de Silva")   
print(cust.name)
The __init__ method was called
Lara de Silva
Introduction à la programmation orientée objet en Python

Attributs dans les méthodes

class MyClass:
    def my_method1(self, attr1):
        self.attr1 = attr1
        ...

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...

obj = MyClass() # attr1 créé obj.my_method1(val1) # attr2 créé obj.my_method2(val2)

Attributs dans le constructeur

class MyClass:
    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2
        ...

# Tous les attributs sont créés obj = MyClass(val1, val2)
  • En général, utiliser le constructeur
  • Les attributs sont créés lors de la création de l’objet
  • Code plus utilisable et maintenable
Introduction à la programmation orientée objet en Python

Ajouter des arguments

class Customer:
    # Ajouter l’argument balance
    def __init__(self, name, balance): 

self.name = name # Ajouter l’attribut balance self.balance = balance print("The __init__ method was called")
Introduction à la programmation orientée objet en Python

Ajouter des paramètres

# __init__ est appelé
cust = Customer("Lara de Silva", 1000)
print(cust.name)
print(cust.balance)
The __init__ method was called
Lara de Silva
1000
Introduction à la programmation orientée objet en Python

Arguments par défaut

class Customer:
    # Définir une valeur par défaut pour balance
    def __init__(self, name, balance=0):
        self.name = name
        # Assigner le nouvel attribut
        self.balance = balance
        print("The __init__ method was called")
Introduction à la programmation orientée objet en Python

Arguments par défaut

# Ne pas préciser balance explicitement
cust = Customer("Lara de Silva")

print(cust.name) # L’attribut balance est quand même créé print(cust.balance)
The __init__ method was called
Lara de Silva
0
Introduction à la programmation orientée objet en Python

Bonnes pratiques

1. Initialiser les attributs dans __init__()
Introduction à la programmation orientée objet en Python

Bonnes pratiques

1. Initialiser les attributs dans __init__()
2. Nommage

CamelCase pour les classes, lower_snake_case pour les fonctions et attributs

Introduction à la programmation orientée objet en Python

Bonnes pratiques

1. Initialiser les attributs dans __init__()
2. Nommage

CamelCase pour la classe, lower_snake_case pour les fonctions et attributs

3. Garder self comme self
class MyClass:
    # Cela fonctionne mais n’est pas recommandé
    def my_method(george, attr):
        george.attr = attr
Introduction à la programmation orientée objet en Python

Bonnes pratiques

1. Initialiser les attributs dans __init__()
2. Nommage

CamelCase pour la classe, lower_snake_case pour les fonctions et attributs

3. self est self
4. Utiliser des docstrings
class MyClass:
    """Cette classe ne fait rien"""
    pass
Introduction à la programmation orientée objet en Python

Passons à la pratique !

Introduction à la programmation orientée objet en Python

Preparing Video For Download...