Mi scuso se ho la terminologia sbagliata qui-non riesco a pensare a quale sarebbe il nome di questo particolare idioma.Creare istanze statiche di una classe all'interno di detta classe in Python
Ho cercato di creare una classe Python 3 che dichiari staticamente le istanze di se stesso dentro di sé, un po 'come se un enum potesse funzionare. Ecco una versione semplificata del codice che ho scritto:
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))
Scrivendo questo, ho ricevuto un'eccezione sulla linea 2 (A = Test("A")
). Presumo che la riga 3 sarebbe anche un errore se fosse arrivato così lontano. L'utilizzo di __class__
anziché Test
restituisce lo stesso errore.
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in Test
NameError: name 'Test' is not defined
C'è un modo per fare riferimento alla classe corrente in un contesto statico in Python? Potrei dichiarare queste variabili particolari al di fuori della classe o in una classe separata, ma, per motivi di chiarezza, preferirei non se posso aiutarla.
Per dimostrare meglio quello che sto cercando di fare, ecco lo stesso esempio in 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);
}
}
Questo funziona come ci si aspetterebbe: la stampa:
Test: A
Test: B
Come posso fare la stessa cosa in Python?
Naturalmente-non credono non ho visto questo. Grazie mille per il tuo aiuto. –