Python Glossary English

все Python 3astпонятие

ast.Attribute

выражения

Узел доступа к атрибуту obj.name: выражение-владелец в value, имя атрибута строкой в attr и контекст ctx (Load, Store или Del).

Синтаксис

ast.Attribute(value, attr, ctx)

Поле attr — обычная строка, а не узел Name, поэтому visitor с visit_Name имена атрибутов не увидит. Цепочка a.b.c вложена справа налево: внешний узел — атрибут c, а в его value лежит Attribute для a.b. В a.b.c = 1 контекст Store получает только внешний узел, всё внутри читается с Load.

Примеры

import ast
node = ast.parse('a.b.c = 1').body[0].targets[0]
print(node.attr, type(node.ctx).__name__)  # → c Store
print(node.value.attr, type(node.value.ctx).__name__)  # → b Load
print(node.value.value.id)  # → a

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности