Pourquoi la classe Python ne reconnaît pas la variable statique
Je suis en train de faire une classe en Python, avec les variables et méthodes statiques (attributs et comportements)
import numpy
class SimpleString():
popSize = 1000
displaySize = 5
alphatbet = "abcdefghijklmnopqrstuvwxyz "
def __init__(self):
pop = numpy.empty(popSize, object)
target = getTarget()
targetSize = len(target)
Lorsque le code s'exécute bien qu'il dit qu'il ne peut pas faire le tableau de la pop parce que popSize n'est pas défini
source d'informationauteur Nick Gilbert
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'y accéder par un
self.popSize
ouSimpleString.popSize
. Lorsque vous déclarez une variable dans une classe pour que tout de l'instance fonctions d'accès à cette variable, vous devrez utiliserself
ou le nom de la classe(dans ce casSimpleString
) sinon il va traiter de la variable dans la fonction à une variable locale à la fonction.La différence entre
self
etSimpleString
est qu'avecself
toutes les modifications que vous apportez àpopSize
ne seront reflétées dans le champ d'application de votre exemple, si vous créez un autre exemple deSimpleString
popSize
sera toujours1000
. Si vous utilisezSimpleString.popSize
toute modification que vous apportez à cette variable sera propagée à toute instance de cette classe.Vous devez utiliser
self
ou la classe de l'objet à l'accès des attributs de classe:ou
La dernière forme est vraiment nécessaire uniquement si vous souhaitez contourner une instance de l'attribut avec le même nom:
Ici
self.bar
est une instance de l'attribut (réglage arrive toujours sur l'objet directement). Mais, car il n'y a pas debaz
instance de l'attribut,self.baz
trouve l'attribut class à la place.