2016-02-17 3 views
1

у меня есть конфигурационный файл config.py со следующим содержимым:клон или скопировать импорт питона

a = 1 

Теперь в другом файле я:

import config 
x = config 
x.a = 2 

Теперь, если вы print x.a вы получите 2, но если вы print config.a, вы также получите 2, потому что x и config - это тот же указатель.

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

+0

Почему вы пытаетесь избежать занятий? – Forge

+0

его проще для конечного пользователя обновлять файлы конфигурации, но я мог бы пойти на конфигуратор python, если я могу найти простое решение для этого –

+0

. Вы не должны создавать экземпляры модулей, для чего предназначены классы. – Forge

ответ

0

Да. Модуль copy Python - это именно то, что вам нужно здесь. Измените свой код, чтобы выглядеть следующим образом:

import copy 
import config 
x = copy.copy(config) 
x.a = 2 
config.a = 3 

Теперь x и config будет изменяться независимо друг от друга.

+0

Вы пробовали это. Я использую python 2.7.something, и он не работает. AttributeError: объект 'NoneType' не имеет атрибута 'update' –

Смежные вопросы