首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyright/mypy:"expr“没有属性"id”

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

Stack Overflow用户
提问于 2020-09-21 15:35:03
回答 1查看 445关注 0票数 2

代码:

代码语言:javascript
复制
def extract_assignment(assignment: ast.Assign) -> Dict[str, LINES_RANGE]:
    targets = ', '.join(t.id for t in assignment.targets)

侏儒/泥巴:

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

来自排版

代码语言:javascript
复制
class Assign(stmt):
    targets: typing.List[expr]
    value: expr
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-21 16:59:47

考虑以下守则:

代码语言:javascript
复制
x = [100]
x[0] = 200

运行以下最后检查:

代码语言:javascript
复制
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]))

印刷如下:

代码语言:javascript
复制
<class '_ast.Name'>
<class '_ast.Subscript'>

因此,在这种情况下,ast.expr可以是ast.Name,也可以是_ast.Subscript。只有ast.Name有一个id属性。

要只使用ast.Name的代码,请使用以下代码:

代码语言:javascript
复制
targets = ', '.join(t.id for t in assignment.targets if isinstance(t, ast.Name))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63995481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档