2017-10-06 2 views
0

J'essaie de créer un graphique d'objet dans un code où j'utilise type hint sur les attributs de classe dans Python 3.6. En général, cela ressemble à:Annotations de variables sur une classe

class MyObject: 
    some_variable: float = 1.2 

Mon problème est que je voudrais avoir un attribut qui a un MyObject de type comme ceci:

class MyObject: 
    parent: MyObject = None 

Lorsque je tente ce que je reçois « NameError: nom « MyObject 'n'est pas défini' quand j'essaye de faire cela sur l'annotation. Cela ressemble à un cas de bordure non pris en charge qui ne peut pas réussir actuellement, car MyObject n'existe pas entièrement au moment où l'annotation est définie.

Répondre

1

Cela peut être fait en utilisant forward references. Donc, votre code ressemblerait à ceci:

class MyObject: 
    parent: 'MyObject' = None 
0

Cela semble être aki et probablement pas la manière souhaitée pour ce faire, mais vous pouvez définir MyObject avec

class MyObject: 
    pass 

et redéfinir MyObject comme:

class MyObject: 
    parent: MyObject = None