Каков pythonic способ setattr () для модуля? - PullRequest
4 голосов
/ 03 июня 2010

В методе класса я могу добавить атрибуты, используя встроенную функцию:

setattr(self, "var_name", value).  

Если я хочу сделать то же самое в модуле, я могу сделать что-то вроде:

globals()["var_name"] = value

Это лучший способ сделать это, или есть более питоническое решение?

1 Ответ

6 голосов
/ 03 июня 2010

Ваш предложенный подход

globals()["var_name"] = value

действительно самый питонский путь. В частности, это значительно более Pythonic, чем использование eval , которое будет вашей основной (хотя и не только) альтернативой.

Однако, если вы все еще хотите использовать setattr, вы можете сделать это, используя sys.modules , чтобы получить ссылку на текущий объект модуля с переменной __name__ текущего модуля (* 1012) * объяснил здесь ) следующим образом:

import sys
setattr(sys.modules[__name__], "var_name", value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...