2016-04-01 16 views
5

のリストを返します。私はこのようになりますクラスがあります。Pythonのタイプヒンティング方法は、現在のクラス

class CareerTransition(object): 
    def __init__(self, title_from: str, title_to: str)->None: 
     self.title_from = title_from # type: str 
     self.title_to = title_to  # type: str 

    @staticmethod 
    def from_file(fname: str, verbose : bool = False)->List[CareerTransition]: 
     #Do some stuff 
     pass 

を私はそのクラスをインスタンス化しようとすると、私はこのエラーを取得する:

Traceback (most recent call last): 
    File "/Users/simon.hughes/GitHub/analytics-py-careerpathing/careerpathing/data/employment_history.py", line 8, in <module> 
    class CareerTransition(object): 
    File "/Users/simon.hughes/GitHub/analytics-py-careerpathing/careerpathing/data/employment_history.py", line 17, in CareerTransition 
    def from_file(fname: str, verbose : bool = False)->List[CareerTransition]: 
NameError: name 'CareerTransition' is not defined 

型アノテーションを使用して現在のクラスを参照するジェネリック型を参照することはできませんか?クラスがまだ定義されていないので、(明らかではないかもしれないが)明確にするために、そのエラーを投げている。これを回避する方法はありますか?

+0

私は、多くの人が、pythonがタイプヒント(コメントを削除するためだけ)をしていないと教えてくれました。あなたに時間を節約するために - http://stackoverflow.com/questions/32557920/what-are-type-hints-in-python-3-5 – Simon

+0

私は人々にリストを入力する方法ではないことを教えてもらったタイプヒントとしてジェネリックリストを指定している場合は、http://blog.jetbrains.com/pycharm/2015/11/python-3-5-type-hinting-in-pycharm-5/ – Simon

答えて

1

をリテラル__class__を使用することです。すべては次のようになります:

5

は、前方参照のための文字列リテラルを使用します@chepnerで述べたように、その後、具体的なクラスを記述してもよりよい方法

@staticmethod 
def from_file(fname: str, verbose : bool = False)->List['CareerTransition']: 
    #Do some stuff 
    pass 
+0

brilliantを参照してください。どのように多くの人々が私にPythonが型ヒントをサポートしていないか、Listを間違って入力していると言ってきたと信じていません。 – Simon

+0

@シモン2人の合計がそれを言った。 :) – idjaw

+2

いいえ。それはまだ人々です:) – Simon

関連する問題