Python for SEO
Использование __setattr_.
Очень часто использую файл настроек для скрипта посредством модуля ConfigParser. И как-то немножко поднадоело писать в несколько строк каждый раз:
key = config.get("Basic","Key")
ns1 = config.get("Domains","NS1")
ns2 = config.get("Domains","NS2")
Короче, захотел я, чтобы доступ к настройкам выглядел примерно так: ns1 = config.Domains['ns1'], когда надо обратился к ней, вне зависимости от того, сколько настроек в файле. Самая хитрость – это сделать свойством класса секцию файла настроек. Именно для этого нужна функция __setattr__. Вот так у меня всё в итоге получилось:
class ConfigDict(object):
def __init__(self,path):
config = ConfigParser.RawConfigParser()
config.read(path)
for section in config.sections():
dct = {}
for option in config.options(section):
dct[option] = config.get(section,option)
self.__setattr__(section,dct)
Используется это вот так:
def main():
conf = ConfigDict("settings.cfg")
threads = conf.Basic['threads']
ns1 = conf.Domains['ns1']
if __name__ == '__main__':
main()
Ну и сам файл настроек settings.cfg:
[Basic] THREADS = 1 ; потоки [Domains] NS1 = ns1.0adz.com
- 13 Мар 11:48
