Méthodes de classe

Introduction à la programmation orientée objet en Python

George Boorman

Curriculum Manager, DataCamp

Méthodes

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

    def give_raise(self, amount):
        self.salary += amount


# Valeurs d’attribut uniques emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Valeurs d’attribut uniques emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Introduction à la programmation orientée objet en Python

Méthodes de classe

  • Il est possible de définir des méthodes de classe
  • Leur portée doit être limitée car elles n’utilisent pas les données d’instance
class MyClass:
    # Utiliser un décorateur pour déclarer une méthode de classe
    @classmethod

# L’argument cls fait référence à la classe def my_awesome_method(cls, args...): # Faire quelque chose ici # Ne peut pas utiliser d’attributs d’instance
# Appeler la classe, pas l’objet MyClass.my_awesome_method(args...)
  • Comme pour self, cls est une convention, mais tout mot fonctionne
Introduction à la programmation orientée objet en Python

Constructeurs alternatifs

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

@classmethod def from_file(cls, filename): with open(filename, "r") as f: # Lire la première ligne name = f.readline().strip() # Lire la deuxième ligne comme entier salary = int(f.readline().strip())
return cls(name, salary)
  • Permettent des constructeurs alternatifs
  • Un seul __init__() possible

 

  • Utiliser des méthodes de classe pour créer des objets
  • Utiliser return pour renvoyer un objet
  • cls(...) appelle __init__(...)
Introduction à la programmation orientée objet en Python

Constructeurs alternatifs

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline().strip()
          salary = int(f.readline().strip())
      return cls(name, salary)  

Employee.txt

Fichier texte contenant le nom John Smith et le salaire 40000

# Créer un employé sans appeler Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Introduction à la programmation orientée objet en Python

Quand utiliser des méthodes de classe

  • Constructeurs alternatifs

  • Méthodes sans attributs d’instance

  • Limiter à une seule instance (objet) d’une classe

    • Connexions à la base de données
    • Paramètres de configuration
Introduction à la programmation orientée objet en Python

Passons à la pratique !

Introduction à la programmation orientée objet en Python

Preparing Video For Download...