Je définit deux classes dans le même module et que vous souhaitez utiliser le second dans le premier (comme une variable globale):objet ne peut pas être créée de manière globale, mais peut localement python
class Class1(object):
global_c2 = Class2()
def foo(self):
local_c2 = Class2()
class Class2(object):
pass
global_c2 obtient une erreur mais local_c2 ne le fait pas. Cela est logique car lorsque le compilateur regarde à travers ce fichier, il ne sait pas que Class2 va exister. De plus, si je change de classe pour que Class2 soit défini en premier, cela fonctionne.
Cependant, je me demandais s'il y a une autre façon de contourner ce problème. Peut-être que je peux dire à Python que Class2 va exister, alors ne vous en faites pas, ou dois-je simplement les mettre dans le bon ordre?
indenter votre code correctement. –
@AshwiniChaudhary Il est indenté correctement. Eh bien, l'argument 'self' fait allusion à' foo' étant destiné à être une méthode, mais cela fonctionne dans les deux cas et illustre le problème d'une manière ou d'une autre. – delnan
d'où vient la fonction 'foo()'? –