В файле import_.py
, RECIPIENTS
- это static variable
класса Importer
. Это означает, что переменная RECIPIENTS
должна быть доступна с помощью <class-name>.<var-name>
, что в данном случае равно Importer.RECIPIENTS
.
Я бы предложил вам импортировать Importer
из import_.py
и печатать Importer.RECIPIENTS
вместо self.RECIPIENTS
.
Добавить эту строку в файл decorators.py
from import_ import Importer
и измените оператор печати с print self.RECIPIENTS
на
print Importer.RECIPIENTS
Я написал простой пример, чтобы сделать эту работу.
foo.py
class Foo:
VALUE = 'value'
def __init__():
pass
bar.py
from functools import wraps
from foo import Foo # importing class Foo from foo.py
def bar():
def decorator(func):
@wraps(func)
def inner():
print Foo.VALUE
return inner
return decorator
bar()(lambda: None)()
При запуске файла bar.py
мы получаем этот вывод.
$ python bar.py
value
Если вы не хотите добавлять дополнительную строку оператора импорта в верхней части каждого файла, для которого необходимо использовать значение RECIPIENTS
, вы можете напрямую импортировать и печатать, как этот
print __import__('import_').Importer.RECIPIENTS
Однако нет другого способа получить доступ к значению из другого файла без его импорта.