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

问题描述

代码:

df1

pyright / mypy:

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

来自typeshed

library(data.table)
setDT(df1)
setDT(df2)
df1[,c('pay','ynm') := df2[df1,on = c('b' = 'y','d' = 'w'),.(c,e)]]

解决方法

考虑以下代码:

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.Name,请使用以下代码:

targets = ','.join(t.id for t in assignment.targets if isinstance(t,ast.Name))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...