Python Glossary English

Python 3.6+astпонятие

ast.AnnAssign

инструкции

Узел присваивания с аннотацией x: int = 5: цель, аннотация, необязательное значение и флаг simple. Аннотация без значения — тоже AnnAssign.

Синтаксис

ast.AnnAssign(target, annotation, value=None, simple)

В x: int значение отсутствует — value равно None, и код, читающий node.value.value, падает с AttributeError. Флаг simple равен 1 только для голого имени; для self.x: int и для имени в скобках (x): int он 0 — такие аннотации не попадают в __annotations__ модуля или класса. Цель всегда одна: распаковка a, b: int синтаксически запрещена.

Примеры

import ast
node = ast.parse('x: int = 5').body[0]
print(node.target.id, node.annotation.id, node.value.value, node.simple)  # → x int 5 1
bare = ast.parse('self.x: int').body[0]
print(type(bare.target).__name__, bare.value, bare.simple)  # → Attribute None 0

См. также

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