Classes et objets Python - Programmation orientée objet



Ce blog sur «Python Class» traite des principes fondamentaux de la classe, des attributs et de divers concepts OOPS tels que l'héritage, le polymorphisme et l'encapsulation.

Après que Stack Overflow ait prédit que d'ici 2019, Python devancera les autres langages en termes de développeurs actifs, la demande de ne fait que croître.Python suit le paradigme de la programmation orientée objet. Il traite de la déclaration des classes python, de la création d'objets à partir de celles-ci et de l'interaction avec les utilisateurs. Dans un langage orienté objet, le programme est divisé en objets autonomes ou vous pouvez dire en plusieurs mini-programmes. Chaque objet représente une partie différente de l'application qui peut communiquer entre eux.
Dans ce blog de classe python, vous comprendrez chaque aspect des classes et des objets dans l'ordre suivant:

Commençons.:-)





Qu'est-ce qu'une classe Python?

Une classe en python est le plan à partir duquel des objets spécifiques sont créés. Il vous permet de structurer votre logiciel d'une manière particulière. Voici une question comment? Les classes nous permettent de regrouper logiquement nos données et nos fonctions de manière à ce qu'elles soient faciles à réutiliser et à exploiter si nécessaire. Considérez l'image ci-dessous.

java comment convertir double en int

ClassesAndObjects - Classe Python - EdurekaDans la première image (A), il représente un plan d'une maison qui peut être considéré comme Classe . Avec le même plan, nous pouvons créer plusieurs maisons et celles-ci peuvent être considérées comme Objets . En utilisant une classe, vous pouvez ajouter de la cohérence à vos programmes afin qu'ils puissent être utilisés de manière plus propre et efficace. Les attributs sont des membres de données (variables de classe et variables d'instance) et des méthodes accessibles via la notation par points.



  • Variable de classe est une variable partagée par tous les différents objets / instances d'une classe.
  • Variables d'instance sont des variables uniques à chaque instance. Il est défini à l'intérieur d'une méthode et n'appartient qu'à l'instance actuelle d'une classe.
  • Méthodes sont également appelées comme des fonctions définies dans une classe et qui décrivent le comportement d'un objet.

Maintenant, allons de l'avant et voyons comment cela fonctionne dans PyCharm. Pour commencer, jetez d'abord un œil à la syntaxe d'une classe python.

Syntaxe :

class nom_classe: instruction-1. . instruction-N

Ici le ' classe' l'instruction crée une nouvelle définition de classe. Le nom de la classe suit immédiatement le mot-clé ' classe' en python qui est suivi de deux points. Pour créer une classe en python, considérez l'exemple ci-dessous:



employé de classe: passer #no attributs et méthodes emp_1 = employee () emp_2 = employee () La variable #instance peut être créée manuellement emp_1.first = 'aayushi' emp_1.last = 'Johari' emp_1.email='aayushi@edureka.co 'emp_1.pay = 10000 emp_2.first =' test 'emp_2.last =' abc 'emp_2.email='test@company.com' emp_2.pay = 10000 print (emp_1.email) print (emp_2.email)

Production -

aayushi@edureka.co test@company.com

Maintenant, que faire si nous ne voulons pas définir manuellement ces variables. Vous verrez beaucoup de code et il est également sujet aux erreurs. Donc, pour le rendre automatique, nous pouvons utiliser la méthode «init». Pour cela, voyons ce que sont exactement les méthodes et les attributs dans une classe python.

Méthodes et attributs dans une classe Python

Maintenant, la création d'une classe est incomplète sans certaines fonctionnalités. Ainsi, les fonctionnalités peuvent être définies en définissant divers attributs qui agissent comme un conteneur pour les données et les fonctions liées à ces attributs. Les fonctions en python sont également appelées Méthodes . Parler de la init méthode , c'est une fonction spéciale qui est appelée chaque fois qu'un nouvel objet de cette classe est instancié. Vous pouvez la considérer comme une méthode d'initialisation ou vous pouvez la considérer comme des constructeurs si vous venez d'un autre arrière-plan de programmation orienté objet tel que C ++, Java, etc. Maintenant, lorsque nous définissons une méthode dans une classe, ils reçoivent automatiquement une instance. Continuons avec la classe python et acceptons le prénom, le nom et le salaire en utilisant cette méthode.

employé de classe: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + dernier + '@ entreprise.com' emp_1 = employé ('aayushi', 'johari', 350000) emp_2 = employé ('test', 'test', 100000) print (emp_1.email) print (emp_2.email)

Maintenant, dans notre méthode «init», nous avons défini ces variables d'instance (self, first, last, sal). Self est l'instance qui signifie que chaque fois que nous écrivons self.fname = first, c'est la même chose que emp_1.first = 'aayushi'. Ensuite, nous avons créé des instances de classe d'employés où nous pouvons transmettre les valeurs spécifiées dans la méthode init. Cette méthode prend les instances comme arguments. Au lieu de le faire manuellement, ce sera fait automatiquement maintenant.

Ensuite, nous voulons la capacité d'effectuer une sorte d'action. Pour cela, nous ajouterons un méthode à cette classe. Supposons que je souhaite que la fonctionnalité affiche le nom complet de l'employé. Alors, mettons cela en pratique.

employé de classe: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) emp_1 = employee ('aayushi', 'johari', 350000) emp_2 = employee ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Production-

aayushi.johari@company.com test.test@company.com aayushijohari testtest

Comme vous pouvez le voir ci-dessus, j'ai créé une méthode appelée «nom complet» dans une classe. Ainsi, chaque méthode à l'intérieur d'une classe python prend automatiquement l'instance comme premier argument. Maintenant, dans cette méthode, j'ai écrit la logique pour imprimer le nom complet et le renvoyer au lieu du prénom et du nom de famille emp_1. Ensuite, j'ai utilisé «self» pour qu'il fonctionne avec toutes les instances. Par conséquent, pour imprimer ceci à chaque fois, nous utilisons un méthode .

En allant de l'avant avec les classes Python, il existe des variables qui sont partagées entre toutes les instances d'une classe. Ceux-ci sont appelés comme variables de classe . Les variables d'instance peuvent être uniques pour chaque instance, comme les noms, les e-mails, les sal, etc. Compliqué? Comprenons cela avec un exemple. Reportez-vous au code ci-dessous pour connaître l'augmentation annuelle du salaire.

employé de classe: perc_raise = 1.05 def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) def apply_raise (self): self.sal = int (self.sal * 1.05 ) emp_1 = employé ('aayushi', 'johari', 350000) emp_2 = employé ('test', 'test', 100000) print (emp_1.sal) emp_1.apply_raise () print (emp_1.sal)

Production-

350000 367500

Comme vous pouvez le voir ci-dessus, j'ai d'abord imprimé le salaire, puis appliqué l'augmentation de 1,5%. Afin d'accéder à ces variables de classe, nous devons soit y accéder via la classe ou une instance de la classe. Voyons maintenant les différents attributs d'une classe Python.

Attributs dans une classe Python

Les attributs en Python définissent une propriété d'un objet, d'un élément ou d'un fichier. Il existe deux types d'attributs:

  • Attributs de classe intégrés: Il existe divers attributs intégrés présents dans les classes Python. Par exemple _dict_, _doc_, _name _, etc. Permettez-moi de prendre le même exemple où je veux afficher toutes les paires clé-valeur de employee1. Pour cela, vous pouvez simplement écrire l'instruction ci-dessous qui contient l'espace de noms de la classe:

    imprimer (emp_1 .__ dict__)

    Après son exécution, vous obtiendrez une sortie telle que: {‘fname’: ‘aayushi’, ‘lname’: ‘johari’, ‘sal’: 350000, ’email’: ‘aayushi.johari@company.com’}

  • Attributs définis par les utilisateurs : Les attributs sont créés dans la définition de classe. Nous pouvons créer dynamiquement de nouveaux attributs pour les instances existantes d'une classe. Les attributs peuvent également être liés aux noms de classe.

Ensuite, nous avons public, protégé et privé les attributs. Comprenons-les en détail:

comment utiliser les sémaphores en java
Appellation Type Sens
NomPubliqueCes attributs peuvent être librement utilisés à l'intérieur ou à l'extérieur d'une définition de classe
_NomProtégéLes attributs protégés ne doivent pas être utilisés en dehors de la définition de classe, sauf à l'intérieur d'une définition de sous-classe
__NomPrivéCe type d'attribut est inaccessible et invisible. Il n’est ni possible de lire ni d’écrire ces attributs, sauf à l’intérieur de la définition de classe elle-même


Ensuite, voyons le composant le plus important d'une classe python, à savoir les objets.

Que sont les objets dans une classe Python?

Comme nous l'avons vu ci-dessus, un objet peut être utilisé pour accéder à différents attributs. Il est utilisé pour créer une instance de la classe. Une instance est un objet d'une classe créée au moment de l'exécution.

To vous donner un aperçu rapide, un objet est essentiellement tout ce que vous voyez autour. Par exemple: Un chien est un objet de la classe animale, je suis un objet de la classe humaine. De même, il peut y avoir différents objets dans la même classe de téléphone.Ceci est assez similaire à un appel de fonction dont nous avons déjà parlé. Comprenons cela avec un exemple:

class MyClass: def func (self): print ('Hello') # créer une nouvelle MyClass ob = MyClass () ob.func ()

En allant de l'avant avec la classe python, comprenons les différents concepts de POO.

Concepts de POO

La POO fait référence à la programmation orientée objet en Python. Eh bien, Python n'est pas complètement orienté objet car il contient des fonctions procédurales. Maintenant, vous devez vous demander quelle est la différence entre une programmation procédurale et orientée objet. Pour dissiper votre doute, dans une programmation procédurale, le code entier est écrit dans une longue procédure même s'il peut contenir des fonctions et des sous-programmes. Ce n'est pas gérable car les données et la logique se mélangent. Mais lorsque nous parlons de programmation orientée objet, le programme est divisé en objets autonomes ou en plusieurs mini-programmes. Chaque objet représente une partie différente de l'application qui a ses propres données et logique pour communiquer entre eux. Par exemple, un site Web contient différents objets tels que des images, des vidéos, etc.
La programmation orientée objet inclut le concept de classe Python, d’objet, d’héritage, de polymorphisme, d’abstraction, etc. Comprenons ces sujets en détail.

Classe Python: héritage

L'héritage nous permet d'hériter des attributs et des méthodes de la classe base / parent. Ceci est utile car nous pouvons créer des sous-classes et obtenir toutes les fonctionnalités de notre classe parente. Ensuite, nous pouvons écraser et ajouter de nouvelles fonctionnalités sans affecter la classe parente. Comprenons le concept de classe parent et de classe enfant avec un exemple.

Comme nous pouvons le voir sur l'image, un enfant hérite des propriétés du père. De même, en python, il existe deux classes:

1. Classe parente (classe Super ou Base)

2. Classe enfant (sous-classe ou classe dérivée)

Une classe qui hérite des propriétés est appelée Enfant Classe alors qu'une classe dont les propriétés sont héritées est appelée Parent classe.

L'héritage fait référence à la capacité de créer Sous-classes qui contiennent des spécialisations de leurs parents. Il est en outre divisé en quatre types, à savoir les héritages simples, multiniveaux, hiérarchiques et multiples. Reportez-vous à l'image ci-dessous pour obtenir une meilleure compréhension.

Allons de l'avant avec la classe python et comprenons à quel point l'héritage est utile.

Dites, je veux créer des classes pour les types d'employés. Je créerai des «développeurs» et des «managers» en tant que sous-classes puisque les développeurs et les managers auront un nom, une adresse e-mail et un salaire et toutes ces fonctionnalités seront présentes dans la classe des employés. Ainsi, au lieu de copier le code des sous-classes, nous pouvons simplement réutiliser le code en héritant de l'employé.

employé de la classe: num_employee = 0 rise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + dernier + '@ entreprise.com' employee.num_employee + = 1 def nom complet (self): retourne '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( développeur de classe self.sal * rise_amount (employé): passer emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.email)
 Production - aayushi.johari@company.com

Comme vous pouvez le voir dans la sortie ci-dessus, tous les détails de la classe d'employé sont disponibles dans la classe de développeur.Maintenant, que faire si je veux changer le montant de raise_amount pour un développeur à 10%? voyons comment cela peut être fait dans la pratique.

employé de la classe: num_employee = 0 rise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + dernier + '@ entreprise.com' employee.num_employee + = 1 def nom complet (self): retourne '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( développeur de classe self.sal * rise_amount (employé): rise_amount = 1.10 emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Production - 1,1

Comme vous pouvez le voir, il a mis à jour le pourcentage d'augmentation du salaire de 4% à 10%.Maintenant, si je veux ajouter un autre attribut, disons un langage de programmation dans notre méthode init, mais il n’existe pas dans notre classe parente. Y a-t-il une solution pour ça? Oui! nous pouvons copier toute la logique de l'employé et le faire, mais cela augmentera à nouveau la taille du code. Pour éviter cela, considérons le code ci-dessous:

employé de la classe: num_employee = 0 rise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + dernier + '@ entreprise.com' employee.num_employee + = 1 def nom complet (self): retourne '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * rise_amount) développeur de classe (employé): rise_amount = 1.10 def __init __ (self, first, last, sal, prog_lang): super () .__ init __ (first, last, sal) self.prog_lang = prog_lang emp_1 = developer ( 'aayushi', 'johari', 1000000, 'python') print (emp_1.prog_lang)

Par conséquent, avec juste un peu de code, j'ai apporté des modifications. J'ai utilisé super .__ init __ (first, last, pay) qui hérite des propriétés de la classe de base.Pour conclure, l'héritage est utilisé pour réutiliser le code et réduire la complexité d'un programme.

Classe Python: polymorphisme

Le polymorphisme en informatique est la capacité de présenter la même interface pour différentes formes sous-jacentes. En termes pratiques, le polymorphisme signifie que si la classe B hérite de la classe A, elle n'a pas à hériter de tout ce qui concerne la classe A, elle peut faire certaines des choses que la classe A fait différemment. Il est le plus souvent utilisé pour l'héritage. Python est implicitement polymorphe, il a la capacité de surcharger les opérateurs standard afin qu'ils aient un comportement approprié en fonction de leur contexte.

comment compiler des programmes java

Comprenons avec un exemple:

class Animal: def __init __ (self, name): self.name = name def talk (self): pass class Chien (Animal): def talk (self): print ('Woof') class Cat (Animal): def talk ( self): print ('MEOW!') c = Chat ('minou') c.talk () d = Chien (Animal) d.talk ()

Production -

Miaou! Trame

Ensuite, passons à un autre concept de programmation orienté objet, à savoir l'abstraction.

Classe Python: abstraction

L'abstraction est utilisée pour simplifier la réalité complexe en modélisant des classes appropriées au problème. Ici, nous avons une classe abstraite qui ne peut pas être instanciée. Cela signifie que vous ne pouvez pas créer d'objets ou d'instances pour ces classes. Il ne peut être utilisé que pour hériter de certaines fonctionnalités que vous appelez en tant que classe de base. Vous pouvez donc hériter des fonctionnalités mais en même temps, vous ne pouvez pas créer une instance de cette classe particulière. Comprenons le concept de classe abstraite avec un exemple ci-dessous:

depuis abc import ABC, classe de méthode abstraite Employé (ABC): @abstractmethod def Calculate_salary (self, sal): pass class Développeur (Employé): def Calculate_salary (self, sal): finalalary = sal * 1.10 return finalalary emp_1 = Developer () print (emp_1.calculate_salary (10000))

Production-

11000,0

Comme vous pouvez le voir dans la sortie ci-dessus, nous avons augmenté le salaire de base à 10%, c'est-à-dire que le salaire est maintenant de 11000. Maintenant, si vous continuez et créez un objet de classe «Employé», cela vous renvoie une erreur comme python ne le fait pas ne vous permet pas de créer un objet de classe abstraite. Mais en utilisant l'héritage, vous pouvez en fait hériter des propriétés et effectuer les tâches respectives.

Donc les gars, tout était question de classes et d'objets python en un mot. Nous avons couvert toutes les bases de la classe Python, des objets et de divers concepts orientés objet en python, afin que vous puissiez commencer à vous entraîner maintenant. J'espère que vous avez apprécié la lecture de ce blog sur «Python Class» et que vous êtes clair sur chaque aspect dont j'ai discuté ci-dessus. Après la classe python, je proposerai plus de blogs sur Python pour la bibliothèque et le tableau scikit learn. Restez à l'écoute!

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog «Python Class» et nous vous répondrons dans les plus brefs délais.

Pour acquérir une connaissance approfondie de Python et de ses différentes applications, vous pouvez avec notre formation en ligne en direct avec une assistance 24/7 et un accès à vie.