Disculpas si tengo la terminología mal aquí, no puedo pensar lo que este lenguaje particular, sería llamado.crear instancias estáticas de una clase dentro de dicha clase en Python
que he estado tratando de crear una clase de Python 3 que declara estáticamente instancias de sí mismo dentro de sí mismo, algo así como una enumeración funcionaría. Aquí hay una versión simplificada del código que he escrito:
class Test:
A = Test("A")
B = Test("B")
def __init__(self, value):
self.value = value
def __str__(self):
return "Test: " + self.value
print(str(Test.A))
print(str(Test.B))
Escribiendo esto, tengo una excepción en la línea 2 (A = Test("A")
). Supongo que la línea 3 también sería un error si hubiera llegado tan lejos. Usando __class__
en lugar de Test
da el mismo error.
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in Test
NameError: name 'Test' is not defined
¿Hay alguna manera de referirse a la clase actual en un contexto estático en Python? Podría declarar estas variables particulares fuera de la clase o en una clase separada, pero, por cuestiones de claridad, preferiría no hacerlo si puedo evitarlo.
Para demostrar mejor lo que estoy tratando de hacer, aquí está el mismo ejemplo en Java:
public class Test {
private static final Test A = new Test("A");
private static final Test B = new Test("B");
private final String value;
public Test(String value) {
this.value = value;
}
public String toString() {
return "Test: " + value;
}
public static void main(String[] args) {
System.out.println(A);
System.out.println(B);
}
}
Esto funciona como era de esperar: se imprime:
Test: A
Test: B
¿Cómo puedo hacer lo mismo en Python?
Por supuesto-no puedo creer que no lo veo. Muchas gracias por su ayuda. –