日々精進

新しく学んだことを書き留めていきます

pythonのclassのメソッド定義のtype hintに自身のクラスを指定したい

例えば、以下のようにクラスAのメソッドの返値にクラスAを指定したい場合、普通に書くとエラーになる。

class A:
    def create_instance(self) ->A:
        ...

これはclass Aの定義が完了する前にclass Aを参照しているため。 python 3.7以降はfuture importを使うことで解決できるが、3.6以下では -> 'A' のようにクラス名の文字列を使うようにすると PyCharmはクラスを指定したのと同じようにtype checkしてくれるし定義にJumpもできる。 Javaとかに慣れてるとPythonは色々と奇妙なところがあるなぁ。。

参考:

stackoverflow.com