En Python, une classe est livrée avec fonctions membres (méthodes), variables de classe, attributs/variables d'instance (et probablement aussi des méthodes de classe):
class Employee:
# Variable de classe
company = "monentreprise.com"
def __init__(self, prenom, nom, poste):
# Variables d'instance
self._prenom = prenom
self._nom = nom
self._poste = poste
# Fonction membre
def obtenir_nom_complet(self):
return f"{self._prenom} {self._nom}"
En créant une instance de l'objet
mon_employe = Employee("Jean", "Lebois", "Ingénieur logiciel")
nous déclenchons essentiellement __init__
qui va initialiser les variables d'instance du nouvel Employé
créé. Cela signifie que _prenom
, _nom
et _poste
sont des paramètres explicites de l'instance spécifique _mon_employe
_.
De même, les fonctions membres retournent des informations ou modifient l'état d'une instance spécifique.
Maintenant, toute variable définie en dehors du constructeur __init__
est considérée comme une variable de classe. Ces variables sont partagées par toutes les instances de la classe.
jean = Employee("Jean", "Lebois", "Ingénieur logiciel")
bob = Employee("Bob", "Smith", "Ingénieur DevOps")
print(jean.obtenir_nom_complet())
print(bob.obtenir_nom_complet())
print(jean.company)
print(bob.company)
>>> Jean Lebois
>>> Bob Smith
>>> monentreprise.com
>>> monentreprise.com
Vous pouvez également utiliser des méthodes de classe pour modifier la variable de classe pour toutes les instances de la classe. Par exemple :
@classmethod
def changer_nom_de_mon_entreprise(cls, nom):
cls.company = nom
et maintenant changer_nom_de_mon_entreprise()
bob.changer_nom_de_mon_entreprise("monnouvelleentreprise.com")
aura un effet sur toutes les instances de la classe Employé
:
print(bob.company)
print(jean.company)
>>> monnouvelleentreprise.com
>>> monnouvelleentreprise.com
1 votes
Une réponse détaillée avec des exemples dans la question dupliquée : stackoverflow.com/a/9056994/911945