Как воссоздать объект из класса в Python? - PullRequest
0 голосов
/ 28 января 2020

У меня есть простой класс, который загружает json и преобразует его в dict.

class Config(dict):
    def __init__(self, config_path):
        with open(config_path) as f:
            data = json.load(f)
            super().__init__(**data)

Я создаю экземпляр класса, передавая местоположение файла:

config = Config(os.environ['CONFIG_PATH'])

Как я могу воссоздать объект с тем же параметром, но без передачи этого параметра? Например, снова прочитайте файл по тому же пути.

Я знаю, что могу просто снова передать параметр, создать новый объект и назначить его той же переменной. Мне интересно, есть ли общий шаблон для этого.

В конце я хочу иметь возможность сделать что-то вроде:

if something:
   config = config.reload()
# OR even
   config.reload()

1 Ответ

1 голос
/ 28 января 2020

Вам необходимо назначить путь в качестве переменной экземпляра (чтобы он оставался доступным), например, self._path = config_path, затем вы можете просто добавить метод, обновляющий внутреннее состояние, на основе повторного чтения файла, например,

def reload(self):
    with open(self._path) as f:
        self.update(json.load(f))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...