Python >> Tutoriel Python >  >> Python

Méthode magique Python __rdiv__

Le Python __rdiv__() La méthode magique remplace l'opération de division inverse pour un objet personnalisé en Python 2. En Python 3, elle a été remplacée par le __rtruediv__() et __rfloordiv__() dunder méthodes.

  • Le Python __rtruediv__() la méthode est appelée pour implémenter l'opération de division normale / appelé division vraie et appliquez-le en sens inverse.
  • Le Python __rfloordiv__() La méthode implémente l'opération de division entière inverse.

Syntaxe

object.__rdiv__(self, other)

Le __rdiv__() La méthode implémente l'opération de division vraie inverse dans Python 2 avec des opérandes réfléchis et permutés. Ainsi, lorsque vous appelez le x / y , Python tente d'appeler x.__div__(y) . Si la méthode n'est pas implémentée, Python tente d'appeler __rdiv__ sur le bon opérande et si cela n'est pas implémenté non plus, il lève un TypeError .

Nous appelons cela une "méthode Dunder" pour "D ouble Sous Méthode de score" (également appelée "méthode magique" ). Pour obtenir une liste de toutes les méthodes de dunder avec des explications, consultez notre article sur la feuille de triche de dunder sur ce blog.

Exemple

Pour remplacer l'opérateur de division inverse en Python 2, définissez le __rdiv__ méthode dans la classe. Python l'appellera alors sur le deuxième opérande en tant que sauvegarde si le __div__ la méthode n'est pas définie pour le premier opérande.

# Works for Python 2 Only:
class Data:
    def __rdiv__(self, other):
        return '... my result of rdiv...'


a = Data()
b = Data()
c = a / b

print(c)
# ... my result of rdiv...

Si vous voulez le même exemple en Python 3, lisez la suite !

Arrière-plan inversé True Division Python 3

Le Python __rtruediv__() la méthode est appelée pour implémenter l'opération de division normale / appelé division vraie —par opposition à l'opération de division d'étage // .

Par exemple pour évaluer l'expression x / y , Python tente d'appeler x.__truediv__(y) .

Dans l'exemple suivant, vous créez une classe personnalisée Data et écrasez le __truediv__() méthode afin qu'elle renvoie une chaîne factice lors de la tentative de division de deux Data objets utilisant la vraie opération de division a / b .

class Data:
        
    def __rtruediv__(self, other):
        return '... my result of rtruediv...'


a = Data()
b = Data()
c = a / b

print(c)
# ... my result of rtruediv...

Pour comprendre cette opération en détail, n'hésitez pas à relire notre tutoriel ou regarder la vidéo suivante :

Références :

  • https://docs.python.org/3/reference/datamodel.html