为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2023-08-22 16:37:34
代码: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
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

考虑以下代码:


x = [100]

x[0] = 200

运行以下 ast 检查:


import ast


code = """

x = [100]

x[0] = 200

"""


root = ast.parse(code)

for node in ast.walk(root):

    if isinstance(node, ast.Assign):

        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))


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1330 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信