У меня есть очень простая функция декоратора, которую я использую для предоставления функций, определенных в модуле, через свойство __all__
модуля.Поскольку я использую его для нескольких модулей в пакете, он определен в пакете __init__.py
.
, поскольку я не могу использовать __all__
из определения, поскольку это будет означать __all__
модуль __init__.py
(или, скорее, пакет), в настоящее время я делаю это так:
def expose ( fn ):
fn.__globals__['__all__'].append( fn.__name__ )
Кажется, это работает совершенно нормально.Однако я не уверен, что использование свойства __global__
является идеальным способом сделать это, тем более что это свойство кажется недокументированным (по крайней мере, я ничего не мог найти в документации).
Хорошо ли для этого используется __globals__
, или, может быть, есть более простой и надежный способ сделать эту работу?
edit:
Для пояснения, мне не обязательно получать доступсвойство __all__
модуля.Я могу легко использовать другое имя и в конечном итоге с тем же вопросом.Я просто использую __all__
, потому что его цель удержания всех открытых объектов в модуле соответствует моим намерениям.Но в то же время я мог бы назвать это exposedFunctions
или как угодно.Поэтому вопрос больше в том, как получить доступ к глобальным свойствам модуля.