Pyright/mypy:“expr”没有属性“id”

代码:

def extract_assignment(assignment: ast.Assign) -> Dict[str, LINES_RANGE]:
    targets = ', '.join(t.id for t in assignment.targets)

皮赖特/mypy:

错误:“expr”没有属性“id”

来自打字

class Assign(stmt):
    targets: typing.List[expr]
    value: expr


婷婷同学_
浏览 1347回答 1
1回答

慕姐8265434

考虑以下代码:x = [100]x[0] = 200运行以下 ast 检查:import astcode = """x = [100]x[0] = 200"""root = ast.parse(code)for node in ast.walk(root):&nbsp; &nbsp; if isinstance(node, ast.Assign):&nbsp; &nbsp; &nbsp; &nbsp; print(type(node.targets[0]))打印以下内容:<class '_ast.Name'><class '_ast.Subscript'>所以在这种情况下ast.expr可以是ast.Name或_ast.Subscript。只有ast.Name一个id属性。要仅使用ast.Names,请使用以下代码:targets = ', '.join(t.id for t in assignment.targets if isinstance(t, ast.Name))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python