Tutoriel Python – objets, notions avancées (10)

Tutoriel Python - objets, notions avancées
Tutoriel Python - objets, notions avancées

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.

[ Article lu 1 fois aujourd'hui ]
A propos Judicaël Paquet 942 Articles
  Paquet Judicaël (expert en transformation et AI) Mes activités en France et en Suisse : - ingénieur prompt - coach AI - architecte de transformation agile - formations agiles personnalisées - sensibilisations et coaching de manager - audits de maturité agile et de situations - coaching agile (équipes, orga, product owner, scrum master, coach agile) Spécialités : scrum, kanban, management 3.0, agilité à l’échelle, lean startup, méthode agile, prompt AI, Intelligence artificielle. [Me contacter]

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.