Я пытаюсь использовать библиотеку, которая создает объекты и добавляет их в глобальное пространство имен во время выполнения.
PyCharm не может найти ссылки на объекты, поскольку они изначально не находятся в пространстве имен.
Как мне сделать интроспекцию PyCharm, чтобы не жаловаться "Не могу найти ссылку ..."? Я не хочу использовать теги noinspection
.
Пример кода
Чтобы прояснить вопрос, я составил пример кода использования объект, созданный во время выполнения в PyCharm.
main.py
from some_import import some_obj_1
if __name__ == "__main__":
print(f"obj_1.some_attr = {some_obj_1.some_attr}")
some_import.py
class SomeClass:
def __init__(self, attr_init: int = 0):
self.some_attr = attr_init
globals()["some_obj_1"] = SomeClass(1)
Выход выполнения main.py
:
obj_1.some_attr = 1
Что я вижу в PyCharm:
Соответствующие статьи
Dynami c Вывод типа времени выполнения в PyCharm 2.7
В этой статье предлагается включить Collect run-time types information for code insight
. Однако включение этих параметров и запуск отладчика не решили мою проблему.
Возможные решения
- Создание файла-заглушки PyCharm
- Подавление сообщения об ошибке с помощью тега PyCharm
noinspection
+ подсказка типа - Это «руководство», и поэтому мне не очень нравится это решение
# noinspection PyUnresolvedReferences
from some_import import some_obj_1, SomeClass
some_obj_1: SomeClass
if __name__ == "__main__":
print(f"obj_1.some_attr = {some_obj_1.some_attr}")
Это было сделано с использованием Python 3.7.6
и PyCharm 2019.2.5 CE
.