婷婷同學(xué)_
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:錯(cuò)誤:“expr”沒有屬性“id”來自打字:class Assign(stmt):
targets: typing.List[expr]
value: expr
1 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
考慮以下代碼:
x = [100]
x[0] = 200
運(yùn)行以下 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]))
打印以下內(nèi)容:
<class '_ast.Name'>
<class '_ast.Subscript'>
所以在這種情況下ast.expr可以是ast.Name或_ast.Subscript。只有ast.Name一個(gè)id屬性。
要僅使用ast.Names,請(qǐng)使用以下代碼:
targets = ', '.join(t.id for t in assignment.targets if isinstance(t, ast.Name))
添加回答
舉報(bào)
0/150
提交
取消