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
