Можно ли при сопоставлении с шаблоном класса с атрибутами ключевого слова напрямую привязать атрибут к переменной?
Для позиционных аргументов это возможно с помощью оператора моржа: https: //peps.python.org/pep-0622/#walrus-patterns
import ast
tree = ast.parse('foo.bar = 2')
for node in ast.walk(tree):
match node:
case ast.Attribute(value=ast.Name()):
# how to bind value directly?
print(node)
print(value) # name value is not defined
Конечно, можно было бы сделать что-то вроде case ast.Attribute(value=ast.Name()) as attr, а затем использовать attr.value, но mypy это не нравится, и он утверждает, что attr.value является выражением, а не ast.Name.
match node:
case ast.Attribute(value=ast.Name()) as attr:
name: str = attr.value.id # mypy: "expr" has no attribute "id"
Подробнее здесь: https://stackoverflow.com/questions/773 ... o-variable