Отсутствует магический метод возведения в степень в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Отсутствует магический метод возведения в степень в Python

Сообщение Anonymous »

Я определяю несколько методов числовой магии в специальном классе и обнаружил не могу объяснить пробел, связанный с pow()/возведением в степень.

Код: Выделить всё

__pow__(self, other, modulo=None)
вызывается, когда ваш собственный класс является первым/крайним левым операндом.

Код: Выделить всё

__rpow__(self, other, modulo=None)
вызывается, когда ваш собственный класс является вторым операндом.

Я обнаружил случай, когда ни один из них не вызывается, и я этого не понимаю. Вот пример случая, который просто возвращает имя вызываемого метода:

Код: Выделить всё

class Power:
def __pow__(self, other, modulo=None):
return '__pow__'
def __rpow__(self, other, modulo=None):
return '__rpow__'

>>> x = Power()
>>> pow(x, 5)
'__pow__'
>>> pow(5, x)
'__rpow__'
Пока выглядит правильно. Но посмотрите, что произойдет, если вы используете необязательный аргумент по модулю:

Код: Выделить всё

>>> pow(x, x, 5)
'__pow__'
>>> pow(5, x, 5)
Traceback (most recent call last):
File "", line 1, in 
TypeError: unsupported operand type(s) for pow(): 'int', 'Power', 'int'
tl;dr, кажется, __rpow__ не вызывается при использовании аргумента по модулю. Что дает?

Подробнее здесь: https://stackoverflow.com/questions/556 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Самый быстрый способ вычисления возведения в степень двух разреженных матриц в Python?
    Anonymous » » в форуме Python
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Время Python для модульного возведения в степень
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Какова функция C++ для возведения числа в степень?
    Anonymous » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Как мне ввести магический метод __call() с подсказкой типа в PHP?
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Дандер/магический метод лучшие практики для эффективности?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»