2012-04-06 9 views
6
class SomeClass: 
    SOME_CONST = "hello" 
    SOME_OTHER_CONST = SomeClass.SOME_CONST + " world" 

Esto no funciona.Consulte la variable de clase en otra definición de variable de clase

NameError: name 'SomeClass' is not defined

¿Hay alguna manera de referirse a la clase dentro de la clase?

+1

¿Hay alguna razón en particular se necesita el nombre de la clase, o sólo necesita tener acceso a los demás atributos de clase? Lo trata como una variable más en el mismo ámbito, p. 'SOME_OTHER_CONST = SOME_CONST' – Darthfett

+0

Esta pregunta fue hecha hace unos días. La respuesta corta es no. La respuesta larga a veces es usar una metaclase o algo así. Consulte [aquí] (http://stackoverflow.com/questions/9987018/why-does-self-outside-a-functions-parameters-give-a-not-defined-error/9987102#9987102) para obtener una explicación de por qué . – aaronasterling

Respuesta

11

No es necesario el nombre de clase

class SomeClass: 
    SOME_CONST = "hello" 
    SOME_OTHER_CONST = SOME_CONST + " world" 
+0

@AramKocharyan PHP necesita hacer referencia a la clase para acceder a una variable de clase porque tiene una noción de clase más estándar. En python, la máquina virtual ingresa un ámbito local y ejecuta todo el código bajo la instrucción 'clase' como si fuera una función. Luego convierte el espacio de nombres resultante en la clase. Entonces puedes hacer esto en Python porque ya está en el mismo espacio de nombre. – aaronasterling

Cuestiones relacionadas