2017-10-06 6 views
0

Python 3.6のクラス属性でタイプヒントを使用しているコードでオブジェクトグラフを構築しようとしています。一般的に、これは次のようになります。クラスの変数アノテーション

class MyObject: 
    some_variable: float = 1.2 

私の問題は、私はこのようなタイプのMyObjectにを持っている属性を持ちたいということです。

class MyObject: 
    parent: MyObject = None 

私はこれをしようとしたとき、私は「NameErrorを得る:名「MyObjectに注釈でこれを実行しようとすると '定義されていません'。これは、MyObjectがアノテーションが定義された時点では完全に存在していないため、現在は成功できない、サポートされていないエッジケースのようです。

答えて

1

forward referencesを使用してください。したがって、コードは次のようになります。

class MyObject: 
    parent: 'MyObject' = None 
0

このハックのように見える、おそらくこれを行うには、所望の方法ではありませんが、 あなたは

class MyObject: 
    pass 

とMyObjectに定義としてMyObjectにを再定義することができます。これを行うことができる

class MyObject: 
    parent: MyObject = None 
関連する問題