Domanda

Così sto utilizzando i membri della classe statici in modo da poter condividere i dati tra i metodi di classe e metodi statici della stessa classe (ci sarà solo 1 istanza della classe). Capisco questo bene, ma sto solo chiedendo quando i membri statici vengono inizializzati? E 'durante l'importazione? Al primo utilizzo della classe? Perché io vado a chiamare i membri statici di questa classe da più di 1 modulo (quindi più di 1 istruzione import). Saranno tutti i moduli l'accesso ai metodi statici condividono gli stessi membri di dati statici? E se il mio principale cliente elimina l'istanza della mia classe, e poi ricrea (senza terminare tutto o ingegnose Re-importazione), i miei membri dati saranno conservati?

È stato utile?

Soluzione

Si verrà inizializzato in fase di definizione della classe, che avverrà al momento dell'importazione se si sta importando la classe come parte di un modulo. Questa assumendo una "statica" stile di definizione membro della classe in questo modo:

class Foo:
    bar = 1

print Foo.bar # prints '1'

Si noti che, essendo questo un membro della classe statica, non v'è alcuna necessità di creare un'istanza della classe.

L'istruzione import eseguirà il contenuto di un modulo esattamente una volta, non importa quante volte o dove viene eseguito.

Sì, i membri statici sarà condivisa da alcun codice accedervi.

Sì, i membri statici di una classe verranno mantenute se si elimina un oggetto il cui tipo è quella classe:

# 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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top