Pour tous ceux qui cherchent une réponse à cela, sans tenir compte pour l'instant que le mélange des variables statiques et d'instance est une bonne idée.
Il existe deux façons simples d'aborder cette question.
La première façon
class MyClass():
static_variable = 'VARIABLE'
def __init__(self):
self.instanceVariable = 'test'
def access_static(self):
print(__class__.static_variable)
Deuxième façon
class MyClass():
static_variable = 'VARIABLE'
def __init__(self):
self.instanceVariable = 'test'
def access_static(self):
print(self.static_variable)
Une variable d'instance est accessible via classe .static_variable, ou en utilisant self.static_variable aussi longtemps que d'une instance La variable n'a pas été définie pour self.static_variable quelque part dans le code.
utilisant l'auto rendrait ambiguë quant à savoir si vous accédez à une variable variable ou instance statique, donc ma façon préférée de le faire serait simplement précédez static_variable avec _class_ au lieu de ClassName.static_variable
Une raison particulière pour laquelle vous ne faites pas juste 'self.TABLE'? – user2357112
Ou '__class __. TABLE', si vous comptez sur la variable de fermeture magique' __class__' de toute façon? – user2357112
En règle de thump: Dans votre classe, vous ne devriez pas avoir besoin de connaître le nom de la classe (une exception: 'super' dans python-2.x et peut-être dans' __repr__' ou '__str__'). Chaque fois que vous trouvez que vous avez besoin du nom de votre classe, il y a probablement un moyen meilleur/plus facile. – MSeifert