最近mypyを発見したので、コードのタイプチェックを行いたいと思います。
私はSomething
基本クラスを持っています:
class Something():
... something...
そして、私にはいくつかのサブクラスがあります。それらはすべてのインスタンスですSomething
が、タイプは異なります。
class Thing(Something)
def __init__():
short_name = "S"
class OtherThing(Something)
def __init__():
short_name = "T"
これらのオブジェクトを使用するとき、私は通常それらをリストに入れます:
s1 = Thing()
s2 = OtherThing()
list_things: List[Something] = list()
list_things.append(s1)
list_things.append(s2)
しかし、どうやら私はそれを行うことができません、mypyはThingとOtherThingをSomethingの「下位タイプ」として認識しません。
どうすれば修正できますか?
Githubの問題を確認してください
そこに見られるように、そして公式ドキュメントでは、それは設計どおりです
回避策として、githubに関するJukkaLのコメントから引用します。
Sequence[x]
代わりにList[x]
、例のようなコードを機能させるために使用できることがよくあります。これは、Sequence
が共変であり、リスト内のアイテムを設定できないために機能します。List[x]
これは、不変であり、リストの変更を許可する場合とは異なります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加