Динамически импортировать класс по имени для статического доступа - PullRequest
0 голосов
/ 21 декабря 2009

Я генерирую имена классов динамически, а затем хочу импортировать этот класс по его имени для доступа к статическому методу.

Это класс для импорта в "the_module.py":

class ToImport(object):

    @classmethod
    def initialize(cls, parameter):
        print parameter

Согласно сообщению в блоге , насколько я понял:

theModule = __import__("the_module")
toImport = getattr(theModule, "ToImport")
toImport.initialize("parameter")

Но пример блога кажется неполным, поскольку он дает мне объект модуля без моего желаемого класса ToImport. Глядя на документацию __import__() , я обнаружил, что для этой функции есть дополнительные атрибуты. Мне удалось с

theModule = __import__("the_module", globals(), locals(), ["ToImport"])

Почему я должен указывать атрибут fromlist? Не могу ли я импортировать все атрибуты модулей?

1 Ответ

2 голосов
/ 21 декабря 2009

Я сделал именно то, что вы сделали, и я получил класс.

In [1]: theModule = __import__("the_module")

In [2]: toImport = getattr(theModule, "ToImport")

In [3]: toImport.initialize("parameter")
parameter

Я использую Python 2.6.4. Не могли бы вы объяснить, что именно у вас не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...