Tworzenie klasy ze wszystkimi elementami określonymi w pliku przy użyciu ConfigParser

Stworzyłem plik podobny do pliku .ini ze wszystkimi wartościami, których potrzebuję później w moim programie, patrz poniżej:

[debugging]
checkForAbort = 10
...

[official]
checkForAbort = 30
...

Chciałbym przeczytać wszystkie te elementy w jednej klasie i udostępnić je z innych części mojego projektu Pythona. Do tej pory mam następujący kod:

from ConfigParser import SafeConfigParser
import glob

class ConfigurationParameters
    def __init__(self):
        self.checkForAbortDuringIdleTime = None     

    parser = SafeConfigParser()

    # making a list here in case we have multiple files in the future!
    candidatesConfiguration = ['my.cfg']
    foundCandidates = parser.read(candidatesConfiguration)
    missingCandidates = set(candidatesConfiguration) - set(found)
    if foundCandidates:
        print 'Found config files:', sorted(found)
    else
        print 'Missing files     :', sorted(missing)
        print "aborting..."


    # check for mandatory sections below
    for candidateSections in ['official', 'debugging']:
        if not parser.has_section(candidateSections)
            print "the mandatory section", candidateSections " is missing"
            print "aborting..."

    for sectionName in ['official', 'debugging']:
        for name, value in parser.items(section_name):
            self.name = value

Jestem nowym użytkownikiem Pythona, ale nadal widzę wiele problemów z moim kodem:

Jestem zmuszony dodać atrybut dla każdego elementu w moim pliku klasy. i utrzymuj synchronizację pliku konfiguracyjnego i mojej klasy przez cały czas.Ta klasa nie jest singletonem, dlatego odczyt / parsowanie zostanie wykonane z dowolnego miejsca, do którego jest importowane!Jeśli wartość dodana do pliku konfiguracyjnego nie jest zdefiniowana w mojej klasie, prawdopodobnie ulegnie awarii!

Jak mam rozwiązać ten problem? Czy atrybuty klas mogą być tworzone dynamicznie?

Moja klasa musi tylko czytać z wartości, więc nie trzeba pisać do pliku konfiguracyjnego!

questionAnswers(3)

yourAnswerToTheQuestion