statische Variablen innerhalb einer python-Methode

In eine Python-Methode, ich möchte eine lokale variable, deren Wert bleibt zwischen den aufrufen der Methode.

Diese Frage zeigt, wie zu erklären, wie "statische Variablen" (c++ Terminologie) innerhalb von Funktionen. Ich habe versucht, das gleiche zu tun in einer Instanz-Methode, und war gescheitert.

Hier ist ein funktionierendes minimal-Beispiel, das das problem reproduziert. Sie können kopieren und fügen Sie es in einen Dolmetscher.

class SomeClass(object):
    def some_method(self):
        if not hasattr(SomeClass.some_method, 'some_static_var'):
            SomeClass.some_method.some_static_var = 1  # breaks here

        for i in range(3):
            print SomeClass.some_method.some_static_var
            SomeClass.some_method.some_static_var += 1

if __name__ == '__main__':
    some_instance = SomeClass()
    some_instance.some_method()

Auf die Zeile mit der Bezeichnung "# bricht hier", ich:

AttributeError: 'instancemethod' object has no attribute 'some_static_var'

Merke ich, es gibt einen einfachen workaround, wo ich some_static_var eine member-variable des SomeClass. Doch die variable hat wirklich keine Verwendung außerhalb der Methode, also ich würde viel lieber halten Sie es aus, unübersichtlich SomeClass ' - namespace, wenn ich könnte.

  • Was SomeClass.some_method.im_func.some_static_var = 1 (Vorausgesetzt python2)
Schreibe einen Kommentar