Excuses si j'ai la mauvaise terminologie ici-je ne peux pas penser à ce que cet idiome particulier serait appelé.Créer des instances statiques d'une classe à l'intérieur de cette classe en Python
J'ai essayé de créer une classe Python 3 qui déclare statiquement des instances de lui-même à l'intérieur de lui-même - un peu comme une énumération fonctionnerait. Voici une version simplifiée du code je l'ai écrit:
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))
écriture, je suis une exception sur la ligne 2 (A = Test("A")
). Je suppose que la ligne 3 serait également erronée si elle l'avait fait jusque-là. L'utilisation de __class__
au lieu de Test
donne la même erreur.
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in Test
NameError: name 'Test' is not defined
Y a-t-il un moyen de faire référence à la classe actuelle dans un contexte statique en Python? Je pourrais déclarer ces variables particulières en dehors de la classe ou dans une classe séparée, mais pour des raisons de clarté, je préférerais ne pas pouvoir l'aider.
Pour mieux illustrer ce que je suis en train de faire, voici le même exemple 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);
}
}
Cela fonctionne comme on peut s'y attendre: il imprime:
Test: A
Test: B
Comment puis-je faire la même chose en Python?
Bien sûr -CAN'T crois que je ne l'ai pas vu cela. Merci beaucoup pour votre aide. –