Anatomie d'une classe : attributs et méthodes

Programmation orientée objet en Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Une classe de base

class Customer:

# code de la classe ici
pass
  • class <name>: commence une définition de classe
  • le code à l'intérieur de class est indenté
  • utilisez pass pour créer une classe « vide »
c1 = Customer()
c2 = Customer()
  • utilisez ClassName() pour créer un objet de la classe ClassName
Programmation orientée objet en Python

Ajouter des méthodes à une classe

class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)
  • définition de méthode = fonction définie dans une classe
  • utilisez self comme 1er paramètre dans la définition d'une méthode
cust = Customer()
cust.identify("Laura")
I am Customer Laura
  • ignorez self lors de l'appel d'une méthode sur un objet
Programmation orientée objet en Python
class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)

cust = Customer()
cust.identify("Laura")

Qu'est-ce que self ?

  • les classes sont des gabarits ; comment référer aux données d'un objet précis ?
  • self représente l'objet particulier dans la définition de classe
  • doit être le premier paramètre de toute méthode
  • Python gère self quand la méthode est appelée depuis un objet :

cust.identify("Laura") sera interprété comme Customer.identify(cust, "Laura")

Programmation orientée objet en Python

Nous avons besoin d'attributs

  • Encapsulation : regrouper des données avec les méthodes qui les utilisent
  • P. ex., le nom d'un Customer devrait être un attribut

  $$\text{\Large{Les attributs sont créés par affectation (=) dans les méthodes}}$$

Programmation orientée objet en Python

Ajouter un attribut à la classe

class Customer:  
    # définir l'attribut name d'un objet à new_name
    def set_name(self, new_name):

# Créer un attribut en lui assignant une valeur self.name = new_name # <-- créera .name lorsque set_name est appelée
cust = Customer()                   # <--.name n'existe pas encore ici

cust.set_name("Lara de Silva") # <--.name est créé et vaut "Lara de Silva"
print(cust.name) # <--.name peut être utilisé
Lara de Silva
Programmation orientée objet en Python

Ancienne version

class Customer:  



    # Utiliser un paramètre
    def identify(self, name):   
      print("I am Customer" + name)
cust = Customer()

cust.identify("Eris Odoro")
I am Customer Eris Odoro

Nouvelle version

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Utiliser .name de l'objet lui-*même*
    def identify(self):     
      print("I am Customer" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
I am Customer Rashid Volkov
Programmation orientée objet en Python

Passons à la pratique !

Programmation orientée objet en Python

Preparing Video For Download...