logo

Dunder ou méthodes magiques en Python

Méthodes Python magiques sont les méthodes commençant et se terminant par des traits de soulignement doubles « __ ». Ils sont définis par des classes intégrées en Python et couramment utilisés pour la surcharge d'opérateurs.

On les appelle aussi Méthodes Dunder, Dunder signifie ici Double Under (underscores).



Méthodes magiques Python

Les classes intégrées définissent de nombreuses méthodes magiques, toi() La fonction peut vous montrer les méthodes magiques héritées d’une classe.

Exemple:

Ce code affiche les méthodes magiques héritées par int classe.



Python3






# code> print>(>dir>(>int>))>

>

>

Sortir

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>

Ou, vous pouvez essayer cmd/terminal pour obtenir la liste des fonctions magiques en Python, ouvrez cmd ou terminal, tapez python3 pour accéder à la console Python et tapez :

>>> dire(int)>

Sortir:

Méthodes magiques en Python

Méthodes magiques Python

Vous trouverez ci-dessous les listes des méthodes magiques Python et leurs utilisations.

Initialisation et construction

  • __nouveau__ : Pour être appelé dans l’instanciation d’un objet.
  • __chaud__ : Pour être appelé par la méthode __new__.
  • __du__ : C'est le destructeur.

Méthodes de magie numérique

âge de Rihanna
  • __tronc__ (soi): Implémente le comportement pour math.trunc()
  • __ceil__ (soi): Implémente le comportement pour math.ceil()
  • __sol__ (soi): Implémente le comportement pour math.floor()
  • __rond__ (soi,n): Implémente le comportement du round() intégré
  • __invert__(soi) : Implémente le comportement d'inversion à l'aide de l'opérateur ~.
  • __abdos__(soi) : Implémente le comportement de l'abs() intégré
  • __neg__(soi) : Implémente un comportement pour la négation
  • __pos__(soi) : Implémente un comportement pour unaire positif

Opérateurs arithmétiques

  • __ajouter__ (soi, autre): Implémente le comportement pour math.trunc()
  • __sub__(soi, autre) : Implémente le comportement pour math.ceil()
  • __J'ai__ (soi, autre): Implémente le comportement pour math.floor()
  • __floordiv__ (soi, autre): Implémente le comportement du round() intégré
  • __div__(soi, autre) : Implémente le comportement d'inversion à l'aide de l'opérateur ~.
  • __truediv__(soi, autre) : Implémente le comportement de l'abs() intégré
  • __mod__(soi, autre) : Implémente un comportement pour la négation
  • __divmod__(soi, autre) : Implémente un comportement pour unaire positif
  • __pow__ : Implémente le comportement des exposants à l'aide de l'opérateur **.
  • __lshift__(soi, autre) : Implémente le décalage au niveau du bit vers la gauche à l'aide de l'opérateur <<.
  • __rshift__(soi, autre) : Implémente le décalage au niveau du bit à droite à l'aide de l'opérateur>>.
  • __et__(soi, autre) : Implémente au niveau du bit et en utilisant l'opérateur &.
  • __ou__(soi, autre) : Implémente au niveau du bit ou en utilisant le | opérateur.
  • __xor__(soi, autre) : Implémente xor au niveau du bit à l'aide de l'opérateur ^.

Méthodes de magie des cordes

  • __str__ (soi): Définit le comportement lorsque str() est appelé sur une instance de votre classe.
  • __repr_ _(lui-même) : T o être appelé par la méthode repr() intégrée pour renvoyer une représentation lisible par machine d'un type.
  • __unicode__(soi) : Cette méthode pour renvoyer une chaîne Unicode d'un type.
  • __format__(soi, formatstr) : renvoie un nouveau style de chaîne.
  • __hacher_ _(soi): Il doit renvoyer un entier et son résultat est utilisé pour une comparaison rapide des clés dans les dictionnaires.
  • __nonzero__(soi) : Définit le comportement lorsque bool() est appelé sur une instance de votre classe.
  • __toi_ _(soi): Cette méthode pour renvoyer une liste d'attributs d'une classe.
  • __taille de__( soi): Il renvoie la taille de l'objet.

Méthodes magiques de comparaison

  • __eq__ (soi, autre): Définit le comportement de l'opérateur d'égalité, ==.
  • __ne__(soi, autre) : Définit le comportement de l'opérateur d'inégalité, !=.
  • __lt__ (soi, autre): Définit le comportement de l'opérateur inférieur à, <.
  • __gt__ (soi, autre): Définit le comportement de l'opérateur supérieur à >.
  • __le__(soi, autre) : Définit le comportement de l'opérateur inférieur ou égal à, <=.
  • __ge__ (soi, autre): Définit le comportement de l'opérateur supérieur ou égal à,>=.

Méthodes Dunder ou Magic en Python

Voyons quelques-unes des méthodes magiques Python avec des exemples :

1. Méthode __init__

Le Méthode __init__ car l'initialisation est invoquée sans aucun appel, lorsqu'une instance d'une classe est créée, comme les constructeurs dans certains autres langages de programmation tels que C++, Java, C#, PHP, etc.

Ces méthodes sont la raison pour laquelle nous pouvons ajouter deux chaînes avec l'opérateur « + » sans aucun transtypage explicite.

Python3




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)>

>

Pete Davidson
>

Sortir

>

2. Méthode __repr__

__repr__ La méthode en Python définit comment un objet est présenté sous forme de chaîne.

L'extrait de code ci-dessous imprime uniquement l'adresse mémoire de l'objet chaîne. Ajoutons une méthode __repr__ pour représenter notre objet.

Python3




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)>

>

>

Sortir

Object: Hello>

Si nous essayons d'y ajouter une chaîne :

Python3




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)>

>

>

Sortir:

  TypeError  : unsupported operand type(s) for +: 'String' and 'str'>

3. Méthode __add__

Méthode __add__ en Python définit comment les objets d'une classe seront ajoutés. Il est également connu sous le nom d’opérateur d’addition surchargé.

Ajoutez maintenant la méthode __add__ à la classe String :

Python




# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > >def> __add__(>self>, other):> >return> self>.string>+> other> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)>

quels sont les mois du premier trimestre
>

>

Sortir

Hello Geeks>

Nous avons discuté de certaines des méthodes magiques Python ou méthodes Dunder. Les méthodes magiques en Python peuvent être utilisées pour différentes fonctionnalités de votre classe.

J'espère que vous en apprendrez davantage sur les méthodes magiques Python grâce à cet article et que vous les utiliserez dans vos projets.