Frage

Also habe ich statische Klassenmitglieder bin mit, damit ich Daten zwischen Klassenmethoden und statischen Methoden der gleichen Klasse gemeinsam nutzen kann (es wird nur 1 Instanziierung der Klasse). Ich verstehe diese in Ordnung, aber ich frage mich nur, wenn die statischen Elemente initialisiert werden? Ist es beim Import? Auf der ersten Verwendung der Klasse? Da werde ich die statischen Mitglieder dieser Klasse von mehr als 1 Modul (also mehr als 1 Import-Anweisung) zu rufen. Werden alle Zugriff auf die Module die statischen Methoden die gleichen statischen Datenelemente teilen? Und wenn mein Haupt-Client die Instanz von meiner Klasse löscht und neu erstellt dann (ohne ganz beendet oder neu importieren Sachen), werden meine Daten Mitglieder erhalten?

War es hilfreich?

Lösung

Sie werden in Klassendefinition initialisiert werden, die beim Import passieren wird, wenn Sie die Klasse als Teil eines Moduls importieren. Dies unter der Annahme, eine „statische“ Klassenmember Definition Stil wie folgt aus:

class Foo:
    bar = 1

print Foo.bar # prints '1'

Beachten Sie, dass dieses Element eine statische Klasse zu sein, gibt es keine Notwendigkeit, die Klasse zu instanziieren.

Die Import-Anweisung wird der Inhalt eines Moduls genau einmal ausführen, egal wie oft oder wo sie ausgeführt wird.

Ja, werden die statischen Elemente von jedem Code geteilt werden Zugriff auf sie.

Ja, werden die statischen Elemente einer Klasse erhalten, wenn Sie ein Objekt löschen, dessen Typ die Klasse:

# Create static member
class Foo:
    bar = 1

# Create and destroy object of type Foo
foo = Foo()
del foo

# Check that static members survive
print Foo.bar # Still prints '1'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top