问题描述
代码:
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))