Python est langage de développement devenu très populaire dans le développement d’application. Nous allons continuer à avancer en regardant des notions avancées sur les objets en python et comment les manipuler.
Précédent tutoriel : #9 – Les classes et objets
Ce tutoriel est également disponible en vidéo :
Objets, notions avancées
Sur les objets en Python, nous avons encore beaucoup de choses à regarder. Nous allons donc profiter de ce deuxièmes chapitres sur le sujet pour voir de nouvelles notions utiles.
Gestion des paramètres avancés
Quand nous définissons des paramètres, il est possible lors d’un appel de les cibler précisément en précisant le nom du paramètre. C’est d’ailleurs quelque chose tout a fait possible à faire sur une fonction classique.
class Fruit:
nom = '';
def __init__ (self, nom):
self.nom = nom
banane = Fruit(nom = 'banane')
Bien qu’ici nom soit le premier paramètre à fournir, nous pouvons le cibler spécifiquement. Si ici, ça n’a du coup pas beaucoup de sens au delà que cela puisse améliorer la lisibilité, voici un exemple qui montre les possibilités :
class Fruit:
nom = '';
taille = '';
def __init__ (self, nom, taille):
self.nom = nom
banane = Fruit(taille = 'petite', nom = 'banane')
Ici, nous appelons du coup les paramètres dans un autre sens que celui qui est attendu. Dans certains cas, cela peut être utile mais attention à ne pas abuser de son utilisation.
Comme pour les fonctions, nous pouvons fournir des paramètres par défaut aux fonctions de la classe. Voici du coup ce que cela peut donner :
class Fruit:
nom = '';
taille = '';
def __init__ (self, taille = 'petite', nom):
self.nom = nom
banane = Fruit(nom = 'banane')
Ici, nous pouvons du coup ne pas indiquer le paramètre taille qui a déjà un paramètre par défaut et seulement passer le paramètre nom.
Modifier un paramètre de l’objet
Nous ne l’avions pas vu mais il est parfaitement possible de modifier un paramètre de notre objet après sa création de cette manière :
class Fruit:
nom = '';
taille = '';
def __init__ (self, taille = 'petite', nom):
self.nom = nom
banane = Fruit(nom = 'banane')
banane.taille = 'moyen'
En effet en appelant un paramètre et en utilisant le = d’affectation, nous pouvons modifier la valeur du paramètre de l’extérieur de la classe.
Créer un nouveau paramètre
De la même manière, si le paramètre n’était pas défini par défaut dans la classe, cela permet alors de créer le nouveau paramètre de l’extérieur :
class Fruit:
nom = '';
def __init__ (self, nom):
self.nom = nom
banane = Fruit('banane')
banane.taille = 'moyen'
Créer un paramètre global aux objets de la même classe
Le Python permet de créer un paramètre particulier qui sera partagé par l’ensemble des objets créés à partir de la même classe. Ceci peut être très utile dans certains cas.
class Fruit:
nom = '';
counter = 0
def __init__ (self, nom):
self.nom = nom
self.countObject()
@classmethod
def countObject(cls):
cls.counter += 1
banane = Fruit('banane')
fraise = Fruit('fraise')
print(banane.counter)
print(fraise.counter)
Ici, nous créons une fonction particulière avec @classmethod et en passant un paramètre spécial cls afin d’impacter le paramètre dans l’ensemble des objet créés à partir de cette classe. A chaque création d’objet grâce à la fonction magique __init__, nous ajoutons 1 au paramètre counter par l’intermédiaire de cette fonction particulière que nous avons appelé countObject().
Ainsi ce programme affichera 2 2 soit il a bien impacté le paramètre counter dans tous les objets créés à partir de cette classe Fruit.
Créer des fonctions statiques
Le Python permet de créer des fonctions statiques, concept qui existe dans certains langages de programmation objet. Ceci permet de créer une méthode qui s’exécute sur la classe elle même et pas sur les instances filles (les objets créés à partir de cette classe). Ces fonctions permettent souvent de créer des fonctions utilitaires.
Si vous ne pouvez pas voir l’utilité à l’instant T, sachez que cela a également un impact sur le plan « mémoire » utilisée.
Voici un exemple possible :
class Fruit:
nom = '';
def __init__ (self, nom):
self.nom = nom
@staticmethod
def message():
print('5 fruits et légumes par jour')
banane = Fruit('banane')
banane.message()
Conclusion – objets
Nous avons vu de nouvelles notions utiles sur les objets en Python qui sont indispensables à connaitre pour faire des programmes de qualité. Nous irons plus loin dès le prochain chapitre dans notre apprentissage sur le python qui proposent encore de nombreux secrets.
Soyez le premier à commenter