#python #class
#python #методы #int #синтаксическая ошибка
Вопрос:
Целое число 2
имеет __add__
метод:
>>> "__add__" in dir(2)
True
… но его вызов вызывает ошибку синтаксиса:
>>> 2.__add__(3)
File "<stdin>", line 1
2.__add__(3)
^
SyntaxError: invalid syntax
Почему я не могу использовать __add__
метод?
Комментарии:
1. Варианты этой темы являются относительно распространенными вопросами здесь. Это довольно интересно, хотя я действительно не вижу причин, по которым вы хотели бы сделать это вместо просто
2 3
.2. @mgilson:
(2).__add__
мог бы служить функцией «добавить по два» вместоlambda x: x 2
.3. @unutbu — Интересно. Я полагаю, это было бы умно (менее легко для чтения?) способ сделать это… Хотя это хороший момент. Я полагаю, что я буду искать это в будущем!
4. @unutbu: Я бы предпочел использовать
functools.partial(operator.add, 2)
.5. @MartijnPieters: На каком основании вы делаете этот выбор?
Ответ №1:
2.
анализируется как значение с плавающей точкой, поэтому 2.__add__
это ошибка синтаксиса.
Вы можете оценить
(2).__add__(3)
вместо этого.
In [254]: (2).__add__(3)
Out[254]: 5
Ответ №2:
Другой способ обойти 2.
разбор с плавающей точкой — вставить пробел между 2
и .
>>> 2 .__add__(3)
5