2017-02-26 26 views
2

私は、Pythonのクラスを定義しています:Python型注釈:プロパティに注釈を付ける方法はありますか?

class Foo: 
    bar = property(lambda self: Bar(self)) 

私はそれがクラスBarの項目が含まれていることを言ってbarプロパティに注釈を付けたいです。それを受け入れる方法はありますか?私はこれが有効なPythonの構文であることを知っています:

bar: Bar = property(lambda self: Bar(self)) 

これはプロパティに注釈を付けるために受け入れられる方法ですか?

+3

プロパティは[doc](https://docs.python.org/3/library/functions.html#property)文字列を取ることができることに注意してください – Nullman

答えて

0

あなたが安全になりたい場合は、単にデコレータのフォームを使用してにそれをリファクタリングし、戻り値を指定します。

class Foo: 
    @property 
    def bar(self) -> Bar: 
     return Bar(self) 

これもスムーズにも標準ライブラリに注釈を付けるスタブを収集し、typeshedで使用される形式ですmypyを通過します。 3.6、フォームの可変注釈構文として

mypyでチェックするとき

bar: property = property(lambda self: Bar(self)) 

現在受け入れられます。

関連する問題