Определить узел `Call` в` astroid` - PullRequest
0 голосов
/ 23 сентября 2019

Я хотел бы определить такой узел, как этот:

from astroid import parse
print_node = parse("print()")

print(print_node.body[0].value)

# Call(func=<Name.print l.1 at 0x1abe5f02978>,
#      args=[],
#      keywords=None)

Единственный способ, который я нашел для его определения:

new_print_node = astroid.Call()
new_print_node.postinit(func=print_node.body[0].value.func)

Возможно ли получить напрямуюфункционирует путем создания экземпляра NodeNG в соответствии с рекомендациями документации ?Я не нашел, как определить функцию print из NodeNG

1 Ответ

0 голосов
/ 23 сентября 2019

Это Node просто Name с именем print.

Например, astroid.Name(name="print")

print_node = astroid.Call()
print_node.postinit(
    func=astroid.Name(name="print")
)

, что дает:

Call(func=<Name.print l.None at 0x249099ac710>,
     args=[],
     keywords=None)
...