все Python 3astпонятие
ast.Add
операторы
Класс оператора сложения +: экземпляр Add() стоит в поле op узла BinOp (a + b) и узла AugAssign (a += b).
Синтаксис
ast.Add() # +
Для += отдельного класса нет: AugAssign хранит тот же Add, поэтому поиск сложений по BinOp пропустит составные присваивания. Склейка строк и списков — тоже Add: тип операндов парсер не знает. Унарный плюс +x — не Add, а UAdd внутри UnaryOp. Узел без полей и координат, а парсер раздаёт один и тот же экземпляр, так что проверяют isinstance(op, ast.Add).
Примеры
import ast
print(type(ast.parse('a + b', mode='eval').body.op).__name__) # → Add
print(type(ast.parse('a += b').body[0].op).__name__) # → Add
print(type(ast.parse('+a', mode='eval').body.op).__name__) # → UAdd
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности