Beste Praxis bei der Definition von Instanz-Variablen

Ich bin ziemlich neu in Python und habe eine Frage bezüglich der folgenden Klasse:

class Configuration:
    def __init__(self):
        parser = SafeConfigParser()
        try:
            if parser.read(CONFIG_FILE) is None:
                raise IOError('Cannot open configuration file')
        except IOError, error:
            sys.exit(error)
        else:
            self.__parser = parser
            self.fileName = CONFIG_FILE

    def get_section(self):
        p = self.__parser
        result = []
        for s in p.sections():
            result.append('{0}'.format(s))
        return result

    def get_info(self, config_section):
        p = self.__parser
        self.section = config_section
        self.url = p.get(config_section, 'url')
        self.imgexpr = p.get(config_section, 'imgexpr')
        self.imgattr1 = p.get(config_section, 'imgattr1')
        self.imgattr2 = p.get(config_section, 'imgattr2')
        self.destination = p.get(config_section, 'destination')
        self.createzip = p.get(config_section, 'createzip')
        self.pagesnumber = p.get(config_section, 'pagesnumber')

Ist es OK, um hinzuzufügen mehrere Instanz-Variablen in einer anderen Funktion, get_info in diesem Beispiel, oder ist es am besten Praxis zu definieren, der alle Instanzvariablen im Konstruktor? Konnte nicht es führen zu spaghetti-code, wenn ich definieren neue Instanz-Variablen, die alle über dem Platz?

EDIT: ich verwende diesen code mit einem einfachen Bild-Spachtel. Über get_section ich wieder alle Abschnitte in der config-Datei, und klicken Sie dann Durchlaufen Sie, besuchen Sie jede Website, die ich bin Schaben Bilder aus. Für jede iteration ich einen Anruf an get_section Sie die Konfigurations-Einstellungen für jeden Abschnitt in der config-Datei.
Wenn jemand kann kommen mit einem anderen Ansatz, es werde in Ordnung sein! Danke!

stackoverflow.com/questions/2964230/...
Die self.__parser = None sollte festgelegt werden, am Anfang des __init__(). Der Grund dafür ist, dass die __init__() wird als erste mentod von bereits vorhandenen - Objekt. Wenn der parser fehlschlägt, Lesen Sie die config-Datei und löst die Ausnahme aus, kann die Ausnahme durch aufgefangene anderswo (das Programm kann nicht beendet werden). Dann das Objekt der Configuration Klasse noch vorhanden ist und die später get_info() verursachen *AttributeError: Konfiguration Beispiel hat kein Attribut '__ - parser'.
Sollte ich gelesen haben, beantworten Sie die Art und Weise, dass ich sollte hinzufügen self.__parser = None Anfang __init__.py oder schlagen Sie vor, sich zu bewegen der parser Initialisierung von __init__.py zu einer anderen Funktion?
Nein, die self.__parser geschaffen werden sollte, an den Anfang der Methode __init__ von der Klasse Configuration. Die __init__.py ist völlig unabhängig von dem problem.

InformationsquelleAutor happygoat | 2012-05-01

Schreibe einen Kommentar