2016-11-02 3 views
2

私は を通じてclassmethodをタイプヒントとオブジェクトの作成を結合しようとすると、私は次のようNameErrorを得る:ヒント:実際のクラスのインスタンスを返すように指定するにはどうすればよいですか?

NameError: name 'Person' is not defined 
私は私のクラスの インスタンスを返すようにしたいタイプヒンティングによって示すことができますどのように

現在定義中ですか? Pythonはclass Personを解決することはできませんので

classmethodfrom_dictの定義は失敗します。


例(例を参照)。

class Person: 

    def __init__(self, name: str): 
     self.name = name 

    @classmethod 
    def from_dict(self, info: dict) -> Person: 
     person_obj = Person(info['name']) 
     return person_obj 

    def speak(self, word: str) -> str: 
     print(word) 
     return self.name + 'said' + word 

答えて

2

TypeVarを使用する必要があります。

from typing import TypeVar 
PersonType = TypeVar("PersonType", bound="Person") 

class Person: 
    @classmethod 
    def from_dict(self, info: dict) -> PersonType: 
     person_obj = Person(info['name']) 
     return person_obj 
関連する問題