Я пишу приложение Python, которое будет использовать файл конфигурации, поэтому я делегирую управление конфигурационным файлом в выделенный модуль configmanager
и внутри него класс, ConfigManager
.Python classes - запустить метод при вызове любого другого метода
Когда выполняется метод в пределах ConfigManager
, который каким-то образом изменит мой конфигурационный файл, мне нужно будет получить последнюю версию файла с диска. Конечно, в духе DRY я должен делегировать открытие файла конфигурации своей собственной функции.
Тем не менее, я чувствую, что явным образом вызываю метод получения и возврата файла конфигурации в каждую редактируемую функцию, это не очень «чистое».
Есть ли рекомендуемый способ в Python для запуска метода и сделать значение доступным для других методов в классе, когда и до метод запускается в этом классе?
Другими словами:
Я создаю
ConfigManager.edit_config()
.Когда вызывается
ConfigManager.edit_config()
, выполняется другая функцияConfigManager.get_config_file()
.ConfigManager.get_config_file()
делает ценность доступной для методаConfigManager.edit_config()
.И
ConfigManager.edit_config()
теперь работает, имея доступ к значению, указанномуConfigManager.get_config_file()
.
Я ожидаю много версий edit_config()
методов в ConfigManager
, следовательно, желание DRY моего кода.
Есть ли рекомендуемый способ выполнения чего-то подобного? Или я должен просто создать функцию, чтобы получить конфигурацию в порядке, и вручную вызывать ее каждый раз?
Uhm ... call 'self.get_config_file()' in 'edit_config()'? Явный лучше, чем неявный. В чем проблема этого явно? – deceze
Как я уже сказал, мне кажется, что есть лучший способ, чем запустить функцию вручную каждый раз. Я думал, что у Python может быть специальный метод класса, например __init __(). Если нет, то я могу сделать это вручную, я просто хотел изучить другие возможности. – 99lives
У вас есть много методов, которые нужно было бы назвать 'get_config_file'? Тогда я мог понять, что вы можете [DRY] (https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) ваш код ... Но если этот метод нужно запускать всякий раз, когда вы вызываете 'edit_config', тогда он не делает разница, независимо от того, делает он это неявно или явно. – deceze