¿Cómo puedo acceder a variables de clase "estáticas" dentro de los métodos?
Si tengo el siguiente código:
class Foo(object):
bar = 1
def bah(self):
print(bar)
f = Foo()
f.bah()
se queja
NameError: el nombre global 'barra' no está definido
¿ Cómo puedo acceder a la clase/variable estática bar
dentro del método bah
?
Aceptado
En lugar de bar
usar self.bar
o Foo.bar
. Asignar a Foo.bar
creará una variable estática y asignar a self.bar
creará una variable de instancia.
Definir método de clase:
class Foo(object):
bar = 1
@classmethod
def bah(cls):
print cls.bar
Ahora, si bah()
tiene que ser un método de instancia (es decir, tener acceso a uno mismo), aún puede acceder directamente a la variable de clase.
class Foo(object):
bar = 1
def bah(self):
print self.bar