Python динамический импорт и изменение переменной

Допустим, у меня есть следующий файл конфигурации:

config.py:

x = 2
y = x * 2

Я хотел бы импортировать это в файл main.py, желательно с помощью команды load_source, но я также хочу иметь возможность изменить значение x во время импорта, чтобы изменение x распространялось на другие переменные в конфигурации.py. Например, я хочу следующий код, печатает 6, а не 4.

main.py:

import imp
config = imp.load_source('', 'config.py')
config.x = 3
print config.y

Каков наилучший способ сделать это? Я знаю, что могу написать функции в config.py, чтобы сделать это для меня, но я предпочитаю, чтобы конфигурация была только простыми определениями переменных.

1 ответ

Решение

Поместите код в класс:

class Config(object):
    def __init__(self, x=2):
        self.x = x
        self.y = x * 2

Затем в вашей основной программе:

c = Config(3)
print c.y
Другие вопросы по тегам