introduction
Object-oriented programming permet d'utiliservariables au niveau de la classe ou au niveau de l'instance. LesVariables sont essentiellement des symboles qui représentent une valeur que vous utilisez dans un programme.
Au niveau de la classe, les variables sont appeléesclass variables, tandis que les variables au niveau de l'instance sont appeléesinstance variables.
Lorsque nous nous attendons à ce que les variables soient cohérentes d'une instance à l'autre ou lorsque nous souhaitons initialiser une variable, nous pouvons définir cette variable au niveau de la classe. Lorsque nous prévoyons que les variables changeront de manière significative d’une instance à l’autre, nous pouvons les définir au niveau de chaque instance.
L'un des principes du développement logiciel est le principeDRY, qui signifiedon’t repeat yourself. Ce principe vise à limiter la répétition dans le code, et la programmation orientée objet adhère au principe DRY car elle réduit la redondance.
Ce tutoriel présentera l'utilisation de variables de classe et d'instance dans la programmation orientée objet dans Python.
Variables de classe
Les variables de classe sont définies dans lesclass construction. Comme elles appartiennent à la classe elle-même, les variables de classe sont partagées par toutes les instances de la classe. Ils auront donc généralement la même valeur pour chaque instance, sauf si vous utilisez la variable de classe pour initialiser une variable.
Définies en dehors de toutes les méthodes, les variables de classe sont, par convention, généralement placées juste en dessous de l'en-tête de classe et avant lesconstructor method et les autres méthodes.
Une seule variable de classe ressemble à ceci:
class Shark:
animal_type = "fish"
Ici, la variableanimal_type
reçoit la valeur"fish"
.
Nous pouvons créer une instance de la classeShark
(nous l'appelleronsnew_shark
) et imprimer la variable en utilisant la notation par points:
shark.py
class Shark:
animal_type = "fish"
new_shark = Shark()
print(new_shark.animal_type)
Lançons le programme:
python shark.py
Outputfish
Notre programme renvoie la valeur de la variable.
Ajoutons encore quelques variables de classe et imprimons-les:
shark.py
class Shark:
animal_type = "fish"
location = "ocean"
followers = 5
new_shark = Shark()
print(new_shark.animal_type)
print(new_shark.location)
print(new_shark.followers)
Comme pour toute autre variable, les variables de classe peuvent être constituées de n'importe queldata type disponible en Python. Dans ce programme, nous avons des chaînes et un entier. Exécutons à nouveau le programme avec la commandepython shark.py
et voyons le résultat:
Outputfish
ocean
5
L'instance denew_shark
est capable d'accéder à toutes les variables de classe et de les imprimer lorsque nous exécutons le programme.
Les variables de classe nous permettent de définir des variables lors de la construction de la classe. Ces variables et leurs valeurs associées sont alors accessibles à chaque instance de la classe.
Variables d'instance
Les variables d'instance appartiennent aux instances de la classe. Cela signifie que pour chaque objet ou instance d'une classe, les variables d'instance sont différentes.
Contrairement aux variables de classe, les variables d'instance sont définies dans les méthodes.
Dans l'exemple de classeShark
ci-dessous,name
etage
sont des variables d'instance:
class Shark:
def __init__(self, name, age):
self.name = name
self.age = age
Lorsque nous créons un objetShark
, nous devrons définir ces variables, qui sont passées en paramètres dans la méthode constructeur ou dans une autre méthode.
class Shark:
def __init__(self, name, age):
self.name = name
self.age = age
new_shark = Shark("Sammy", 5)
Comme pour les variables de classe, nous pouvons également appeler pour imprimer des variables d'instance:
shark.py
class Shark:
def __init__(self, name, age):
self.name = name
self.age = age
new_shark = Shark("Sammy", 5)
print(new_shark.name)
print(new_shark.age)
Lorsque nous exécutons le programme ci-dessus avecpython shark.py
, nous recevrons le résultat suivant:
OutputSammy
5
La sortie que nous recevons est constituée des valeurs des variables que nous avons initialisées pour l'instance d'objet denew_shark
.
Créons un autre objet de la classeShark
appeléstevie
:
shark.py
class Shark:
def __init__(self, name, age):
self.name = name
self.age = age
new_shark = Shark("Sammy", 5)
print(new_shark.name)
print(new_shark.age)
stevie = Shark("Stevie", 8)
print(stevie.name)
print(stevie.age)
L'objetstevie
, comme l'objetnew_shark
, transmet les paramètres spécifiques à cette instance de la classeShark
pour affecter des valeurs aux variables d'instance.
Les variables d'instance, appartenant aux objets de la classe, permettent à chaque objet ou instance d'avoir différentes valeurs attribuées à ces variables.
Utilisation simultanée de variables de classe et d'instance
Les variables de classe et les variables d'instance seront souvent utilisées en même temps, alors regardons un exemple de cela en utilisant la classeShark
que nous avons créée. Les commentaires dans le programme décrivent chaque étape du processus.
shark.py
class Shark:
# Class variables
animal_type = "fish"
location = "ocean"
# Constructor method with instance variables name and age
def __init__(self, name, age):
self.name = name
self.age = age
# Method with instance variable followers
def set_followers(self, followers):
print("This user has " + str(followers) + " followers")
def main():
# First object, set up instance variables of constructor method
sammy = Shark("Sammy", 5)
# Print out instance variable name
print(sammy.name)
# Print out class variable location
print(sammy.location)
# Second object
stevie = Shark("Stevie", 8)
# Print out instance variable name
print(stevie.name)
# Use set_followers method and pass followers instance variable
stevie.set_followers(77)
# Print out class variable animal_type
print(stevie.animal_type)
if __name__ == "__main__":
main()
Lorsque nous exécutons le programme avecpython shark.py
, nous recevrons le résultat suivant:
OutputSammy
ocean
Stevie
This user has 77 followers
fish
Ici, nous avons utilisé à la fois des variables de classe et d'instance dans deux objets de la classeShark
,sammy
etstevie
.
Conclusion
Dans la programmation orientée objet, les variables au niveau de la classe sont appelées variables de classe, tandis que les variables au niveau de l'objet sont appelées variables d'instance.
Cette différenciation nous permet d'utiliser des variables de classe pour initialiser des objets avec une valeur spécifique assignée à des variables et d'utiliser des variables différentes pour chaque objet avec des variables d'instance.
L'utilisation de variables spécifiques à une classe et à une instance peut garantir que notre code adhère au principe DRY afin de réduire la répétition dans le code.