[Python-de] RE: [Python-de] Re: [Python-de] RE: [Python-de] "Static" Variabeln in einer Funktion möglich?

Achim Domma (ProCoders) domma at procoders.net
Sun Apr 13 20:41:02 EDT 2003


Hi Klaus,

> Eigentlich tut das wenig zur Sache, meine Frage war schon allgemein
> gedacht. Ich finde es nicht "exotisch", das sich eine Funktion
> einen Status
> intern merken kann und wundere mich etwas, das das in Python nicht geht?

Das es geht, haben die anderen Postings ja gezeigt.

> Vereinfacht gesagt hat meine Funktion zwei Parameter, ein Input-File und
> ein Output-File. Sie wird häufiger aufgerufen, wobei der Input-File
> wechselt. Intern soll die Fkt. mitzählen, wieviel Input-Files sie schon
> hatte, wieviel Zeilen aus den verschiedenen Input-Files in Summe gelesen
> wurden usw.

Das hört sich für mich ganz klar noch OO Programmierung an. Was spricht
gegen eine Implementierung der folgenden Art (aus dem Kopf, ungetestet):

class OutputFile:
    def __init__(self,out):
        self.out = out
        self.lines = {}
    def __call__(self,inFile):
        count = self.processSomeLines(inFile)
        self.lines.setdefault(inFile,0) += count
    def processSomeLines(self,inFile):
        #   lese ein paar Zeilen, schreibe sie
        #   nach self.out und liefere Anzahl zurück

out = OutputFile(open('out.txt'))
out(inputFile1)
out(inputFile2)
...
print out.lines[inputFile1]

Das bleibt auch bei mehreren Variablen noch übersichtlich. Und bei
komplexeren Problemen kannst du das volle OO Programm abspulen, um z.B.
spezialisierte OutputFiles zu erzeugen. Wenn's wirklich nur um eine Zahl
geht, würde ich auch Martins Lösung vorziehen.

Gruß,
Achim





More information about the Python-de mailing list