Как я понимаю, метод волхва c объекта можно вызвать любым из двух способов. Во-первых, вот так, где метод magi c вызывается как любой обычный метод:
x = (1, 2, 3, 4)
print(x.__len__())
#prints 4
И, во-вторых, вот так, где метод magi c называется «специально»:
x = (1, 2, 3, 4)
print((len(x)))
#prints 4
Как мы видим, оба эквивалентны. Однако, когда я вызываю метод magi c reversed()
для кортежа с первым способом, я сталкиваюсь с ошибкой:
x = (1, 2, 3, 4)
x.__reversed__()
#causes an attribute error
Однако «специальный» способ вызова обращенного метода работает прекрасно:
x = (1, 2, 3, 4)
reversed(x)
#returns a reversed object
Почему это происходит? Неужели я что-то не так понял о более сложных методах?