Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Почему у числа нельзя вызвать метод напрямую?

#python #python_3x


Вопрос особого практического смысла не имеет, просто стало любопытно, почему в Python
нельзя вызвать метод напрямую у числа? Например, я могу сделать это со строкой:

'3'.__add__('4') # 34


Или со списком:

[].__add__([3]) # [3]


Но не могу сделать так с числом:

3.__add__(4) # SyntaxError: invalid syntax


При этом я могу записать 3 в переменную и тогда все, естественно, ок:

x = 3
x.__add__(4) #7

    


Ответы

Ответ 1



Потому что с точки зрения парсера у вас написано число (float) 3., а за ним вызов __add__(4) и получается синтаксическая ошибка. Нужно объяснить парсеру, что вы вовсе не имели в виду число 3., например заключив число в скобки или поставив пробел перед точкой: >>> (3).__add__(4) 7 >>> 3 .__add__(4) 7 Ещё один вариант 3..__add__(4) (= 7.0), но результат будет числом с плавающей точкой, обычно это не то что требуется.

Комментариев нет:

Отправить комментарий