Dans cette étape, vous apprendrez à propos des attributs de classe en Python. Les attributs de classe sont des variables définies à l'intérieur d'une classe et partagées par toutes les instances (objets) de cette classe. Ils sont différents des attributs d'instance, qui sont spécifiques à chaque instance. Comprendre les attributs de classe est essentiel pour concevoir des classes efficaces et organisées.
-
Ouvrez votre éditeur VS Code.
-
Créez un nouveau fichier nommé class_attributes.py dans le répertoire ~/project.
~/project/class_attributes.py
-
Ajoutez le code suivant au fichier class_attributes.py :
class Dog:
species = "Canis familiaris"
def __init__(self, name, age):
self.name = name
self.age = age
## Creating instances of the Dog class
dog1 = Dog("Buddy", 3)
dog2 = Dog("Lucy", 5)
## Accessing the class attribute
print(dog1.species)
print(dog2.species)
## Accessing instance attributes
print(dog1.name)
print(dog2.name)
Dans cet exemple, species est un attribut de classe car il est défini à l'intérieur de la classe Dog mais en dehors de toute méthode. name et age sont des attributs d'instance car ils sont définis à l'intérieur de la méthode __init__ et sont spécifiques à chaque instance de Dog.
-
Exécutez le script class_attributes.py en utilisant la commande suivante dans le terminal :
python class_attributes.py
Vous devriez voir la sortie suivante :
Canis familiaris
Canis familiaris
Buddy
Lucy
Comme vous pouvez le voir, tant dog1 que dog2 partagent la même valeur pour species, qui est "Canis familiaris". Cependant, ils ont des valeurs différentes pour name car name est un attribut d'instance.
-
Maintenant, modifions l'attribut de classe et voyons comment cela affecte les instances :
class Dog:
species = "Canis familiaris"
def __init__(self, name, age):
self.name = name
self.age = age
## Creating instances of the Dog class
dog1 = Dog("Buddy", 3)
dog2 = Dog("Lucy", 5)
## Accessing the class attribute
print(dog1.species)
print(dog2.species)
## Modifying the class attribute
Dog.species = "New Species"
## Accessing the class attribute again
print(dog1.species)
print(dog2.species)
-
Exécutez à nouveau le script class_attributes.py :
python class_attributes.py
Vous devriez voir la sortie suivante :
Canis familiaris
Canis familiaris
New Species
New Species
Remarquez que lorsque nous modifions Dog.species, le changement est reflété dans dog1 et dog2 car ils partagent le même attribut de classe.
Cet exemple démontre le concept de base des attributs de classe. Ils sont partagés entre toutes les instances d'une classe et peuvent être modifiés en accédant directement à la classe.