¿Cómo puedo acceder a variables de clase "estáticas" dentro de los métodos?

Resuelto Ross Rogers asked hace 15 años • 6 respuestas

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 bardentro del método bah?

Ross Rogers avatar Apr 02 '09 04:04 Ross Rogers
Aceptado

En lugar de barusar self.baro Foo.bar. Asignar a Foo.barcreará una variable estática y asignar a self.barcreará una variable de instancia.

 avatar Apr 01 '2009 21:04

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
vartec avatar Apr 02 '2009 09:04 vartec