Question

J'utilise les membres statiques de classe afin que je puisse partager des données entre les méthodes de classe et des méthodes statiques de la même classe (il ne sera 1 instanciation de la classe). Je comprends bien, mais je me demande quand les membres statiques sont initialisés? Est-il à l'importation? Sur la première utilisation de la classe? Parce que je vais être appeler les membres statiques de cette classe de plus de 1 module (donc plus de 1 déclaration d'importation). Est-ce que tous les modules accéder aux méthodes statiques partagent les mêmes éléments de données statiques? Et si mon principal client supprime l'instance de ma classe, et reconstitue alors (sans résilier complètement ou substance réimportation), seront conservés mes membres de données?

Était-ce utile?

La solution

Ils seront initialisés au moment de la définition de la classe, ce qui va se passer au moment de l'importation si vous importez la classe dans le cadre d'un module. Cette hypothèse d'un style de définition de membre de la classe « statique » comme ceci:

class Foo:
    bar = 1

print Foo.bar # prints '1'

Notez que, ce qui est un membre de classe statique, il n'y a pas besoin d'instancier la classe.

L'instruction import exécutera le contenu d'un module exactement une fois, peu importe combien de fois ou où il est exécuté.

Oui, les membres statiques seront partagés par un code pour y accéder.

Oui, les membres statiques d'une classe seront conservés si vous supprimez un objet dont le type est cette 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'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top