Pythonでクラスを自作し、フィールドに型ヒントを設定したい場合があったのですが、少しハマったのでメモ。
Crawlerというクラスを実装し、そのフィールドsub_crawlerにはset[Crawler]
を指定したかったが、これでは
NameError: name 'Crawler' is not defined
というエラーを吐かれてしまいます。
class Crawler: link: str session: HTMLSession = HTMLSession() sub_crawlers: set[Crawler] <- これだとNameErrorが吐かれる def __init__(self, input_link: str): r = self.session.get(input_link) r.html.render() ...
解決方法
型ヒント中の自作クラスの名前をクォーテーションで囲めばOK
class Crawler: link: str session: HTMLSession = HTMLSession() sub_crawlers: set['Crawler'] <- これでOK def __init__(self, input_link: str): r = self.session.get(input_link) r.html.render() ...
参考
https://stackoverflow.com/questions/41135033/type-hinting-within-a-class