Импортировать переменную класса из другого модуля

Я пытаюсь импортировать только переменную внутри класса из другого модуля:

import module.class.variable # ImportError: No module named class.variable from module.class import variable # ImportError: No module named class from module import class.variable # SyntaxError: invalid syntax (the . is highlighted) 

Я могу сделать следующее, но я бы предпочел просто импортировать одну переменную, в которой я нуждаюсь.

 from module import class as tmp new_variable_name = tmp.variable del tmp 

Это возможно?

 variable = __import__('module').class.variable 

Вы не можете этого сделать – оператор import может только приносить элементы из модулей или подмодулей – атрибуты класса, хотя и адресуемые с тем же синтаксисом точек, который используется для доступа к подмодулю, не могут быть индивидуально импортированы.

Что вы можете сделать, так это:

 from mymodule import myclass myvar = myclass.myvar del myclass 

В любом случае, всякий раз, когда кто-то использует from module import anything синтаксиса, весь модуль считывается и обрабатывается. Исключением является

 from module.submodule import submodule 

, где, если сам подмодуль не требует всего модуля, обрабатывается только подмодуль.

(Таким образом, даже обходное решение выше, mymodule считывается и выполняется – он не становится доступным в глобальном пространстве имен, в котором выполняется оператор импорта, но он будет отображаться со всеми его компонентами в словаре sys.modules .