TGViewer
PyThrone PyThrone @pythrone · 13 subscribers
Post #11 99
Что выведет этот код?

Когда мы выполняем операции вида:

left + right

Вызывается метод left.__add__, но если left.__add__ возвращает NotImplemented, то вызывается
right.__radd__, а если и этот метод возвращает NotImplemented, то выбрасывается ошибка TypeError.

В нашем случае:
x = MyInt и мы переопределили метод __add__, принтанется int __add__, но далее мы возвращаем NotImplemented что заставляет вызвать метод MyFloat.__radd__.
А MyFloat.__add__ не будет вызыван, т.к. всегда вызывается __add__ левого операнда и только __radd__ правого соответсвенно.

В итоге принтанется:

int __add__
float __radd__
10.0


#числа
  • 👍 2
More from @pythrone
  1. Mar 10, 2023Как можно вызывать эту функцию? Правильный ответ # 1 и # 2. arg1 - только позиционный аргу…
  2. Mar 9, 2023В данном случае будет выведено None, потому что оператор and возвращает первое ложное знач…
  3. Feb 27, 2023Что выведет этот код? Iterable - это объект по которому можно пройтись. Для питона это люб…
  4. Feb 22, 2023Что выведет этот код? Могло показаться, что выведется словарь с буквами и их повторением в…
  5. Feb 20, 2023Set - это множество, в котором элементы не имеют порядок. Т.е. порядок не гарантируется, н…
  6. Feb 14, 2023Что выведет этот код? hash() - функция, которая возвращает хэш-значение объекта, если объе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →