Classes & Instances
Moyen
Les classes nous permettent d’organiser nos fonctions/données de manière à pouvoir les réutiliser plus facilement dans le futur.
A savoir:
- Fonctions qui appartienent à une classe => méthodes .
- Variables qui appartienent à une classe => attributs . |
Imaginons que vous souhaitez constituer un profil pour chacun de vos employés (prénom, nom, mail …). Cela revient donc à créer un espèce de moule où seul le prénom, nom, mail changeront pour chaque employé.
Les classes seront donc votre meilleur ami !
Créons la class Employee:
Créons la class Employee:
class Employee:
>>>
File "<ipython-input-1-80b16634c775>", line 1
class Employee: ^
SyntaxError: unexpected EOF while parsingé
Si nous exécutons la ligne d'au-dessus, nous obtiendrons une erreur. Pour cela nous devons ajouter le mot-clef "pass"
class Employee:
pass
Désormais, nous avons une classe vide. Elle ne contient ni attributs, ni méthodes.
Créons 2 employés, on dit qu'on instancie 2 employés.
Créons 2 employés, on dit qu'on instancie 2 employés.
emp_1 = Employee()
emp_2 = Employee()
emp_1 et emp_2 sont des instances de notre classe Employee.
Ils sont considés comme des objets.
Ils sont considés comme des objets.
print(emp_1)
print(emp_2)
>>>
<__main__.Employee object at 0x7f67a4321dd8>
<__main__.Employee object at 0x7f67a4321da0>
Comme vous pouvez le voir, ce sont bien des objets et ils sont uniques.
Puisque qu'un employé possède forcément un prénom, nom et un mail, allons les leur créer !
Puisque qu'un employé possède forcément un prénom, nom et un mail, allons les leur créer !
emp_1.firstname = 'Ferdinand'
emp_1.lastname = 'Mom'
emp_1.email = 'ferdinand.mom@company.com'
emp_2.firstname = 'Kevin'
emp_2.lastname = 'Kakao'
emp_2.email = 'kevin.kakao@company.com'
Affichons leur mail !
print(emp_1.email)
print(emp_2.email)
>>>
ferdinand.mom@company.com
kevin.kakao@company.com
Imaginons que nous avons des centaines d'employés ! Nous n'allons tout de même pas définir à la main leur prénom, nom et mail ?
Nous devons trouver un moyen de tout créer en une seule fois.
Nous devons trouver un moyen de tout créer en une seule fois.
class Employee:
#Constructor
def __init__(self, firstname, lastname):
#Attributs
self.firstname = firstname
self.lastname = lastname
self.email = firstname + '.' + lastname + '@company.com'
#Instanciation
emp_1 = Employee('ferdinand', 'mom')
emp_2 = Employee('kevin', 'kakao')
print(emp_1.email)
print(emp_2.email)
>>>
ferdinand.mom@company.com
kevin.kakao@company.com
Il y a beaucoup à dire ici:
- __init__() est appelé le "constructeur" . C'est une méthode qui va nous permettre de créer les objets (le moule).
- Voir self comme un moyen de récupérer le nom de l'objet concerné. Par exemple, si nous créons un objet appelé "emp_1", self sera en réalité "emp_1". - Lorsqu'on crée un objet, le constructeur __init__() est automatiquement appelé. |
Remarque:
Lors de l'instanciation , il ne faut pas ajouter self en tant qu'argument. |
Supposons désormais que nous voulons afficher le prénom et le nom de chaque employé.
Pour cela, nous allons créer une méthode.
Pour cela, nous allons créer une méthode.
class Employee:
#Constructeur
def __init__(self, firstname, lastname):
#Attributs
self.firstname = firstname
self.lastname = lastname
self.email = firstname + '.' + lastname + '@company.com'
#Méthodes
def fullname(self):
return self.firstname + ' ' + self.lastname
emp_1 = Employee('ferdinand', 'mom')
emp_2 = Employee('kevin', 'kakao')
print(emp_1.fullname())
print(emp_2.fullname())
>>>
ferdinand mom
kevin kakao
Pour résumer:
- Employee est une classe.
- Les fonctions qui appartienent à la classe => méthodes. - Les variables qui appartienent à la classe => attributs. - __init__() est appelé le "constructeur". Il sert à créer des instances d'Employee . - Le processus de création s'appele l'instanciation. |