MypyはTypeVarタイプの境界を無視しているようです

NoSegfault

たとえば、次のようなコードがあります。

from typing import Type, TypeVar, cast

class SuperClass:
    pass


T = TypeVar('T', bound=SuperClass)


def cast_to(obj: SuperClass, cast_to: Type[T] = SuperClass) -> T:
    return cast(cast_to, obj)

そして、私はそれをに保存しましたtype_check.pymypyを実行すると、次のエラーメッセージが表示されます。

type_check.py:10: error: Incompatible default for argument "cast_to" (default has type "Type[SuperClass]", argument has type "Type[T]")
type_check.py:11: error: Invalid type "cast_to"

私の理解からboundTypeVar、限りTのサブクラスであるSuperClass、それは問題ないはずです。しかし、なぜmypyがここでエラーをスローしているのでしょうか。ありがとう!

gniourf_gniourf

コードには2つの問題があります。最初にcast_to関数のシグネチャは次のようになります。

def cast_to(obj: SuperClass, cast_to: Type[T] = Type[SuperClass]) -> T:

次に、あなたのcastステートメントで、の最初の引数としてmypy使用できるかどうかわかりません代わりに、次のことを試すことができます。cast_tocast

def cast_to(obj: SuperClass, cast_to: Type[T]) -> T:
    return cast(T, obj)

もちろん、この定義cast_toでは、1つの引数だけで呼び出すことはできません


私は今尋ねるつもりです:なぜあなたはこれをする必要があると思いますか?あなたのデザインは良いですか?cast非常に特殊な場合に使用する必要があります。ドキュメントには次のように記載されています。

キャストは、偽のタイプチェッカーの警告を消し、何が起こっているのか完全に理解できないときにタイプチェッカーに少し助けを与えるために使用されます。

したがって、ここでデザインに真剣に質問する必要があります。あなたが達成しようとしていることについてもう少し情報を教えてください。たぶん、あなたがやろうとしていることよりも優れた、よりクリーンなデザインがあるでしょう。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

タイプの順序を無視して、同等のタイプのタプルを比較するにはどうすればよいですか?

分類Dev

Androidタイマーは.cancelを無視しているようです

分類Dev

mypyはどのようにしてソースファイルの1行を無視できますか?

分類Dev

継承を無視して、クラスが特定のタイプであるかどうかを確認するにはどうすればよいですか?

分類Dev

SqlcommandANDは最初のパラメータを無視しているようです

分類Dev

Xamarin.iOSのUIWebViewは外部CSSスタイルを無視しているようですか?

分類Dev

cppcheckで特定のファイルタイプを無視するにはどうすればよいですか?

分類Dev

cppcheckで特定のファイルタイプを無視するにはどうすればよいですか?

分類Dev

ディクトタイプはmypyを使用するTypeVarでは機能しませんか?

分類Dev

タイトルの横にあるアイコンを無視して、タイトルを中央に配置するにはどうすればよいですか?

分類Dev

MyPyでは、制約付きTypeVarを共変にすることはできませんか?制約されているが共変のkey-valタイプを使用した一般的なdictの定義

分類Dev

SpringMessageSourceはプロパティfallbackToSystemLocaleを無視しているようです

分類Dev

SpringMessageSourceはプロパティfallbackToSystemLocaleを無視しているようです

分類Dev

AndroidはonActivityResultのsetResult呼び出しを無視しているようです

分類Dev

DateTime.Parseは文化を無視しているようです

分類Dev

numpy.genfromtxtはdtypeを無視しているようです

分類Dev

アセンブリバージョンを無視して、.NETでタイプを検索するにはどうすればよいですか?

分類Dev

WordPressのdo_actionフックは、保存されていないカスタマイザーの変更を無視しているようですか?

分類Dev

`rm`がエスケープを無視しているように見えるのはなぜですか?

分類Dev

Webpackは私のtypescriptローダーを無視しているようです

分類Dev

Makeは私のCFLAGSとLDFLAGSを無視しているようです

分類Dev

魚の殻はLD_LIBRARY_PATHを無視しているようですか?

分類Dev

Javaは私のtoStringメソッドを無視しているようです

分類Dev

@RefreshScopeはMockitoのモックを無視しているようです

分類Dev

TypeVarを使用してMyPyのパラメーターでデコレーターを入力すると、予想される無人タイプが生成されます

分類Dev

Mavenはwebappのソースとターゲットを無視しているようです

分類Dev

プレイヤーの物理(ローリング)を無視して、弾丸を直接前方に放出するにはどうすればよいですか?

分類Dev

Makefileはフラグを無視しているようです。どうして?

分類Dev

Makefileはフラグを無視しているようです。どうして?

Related 関連記事

  1. 1

    タイプの順序を無視して、同等のタイプのタプルを比較するにはどうすればよいですか?

  2. 2

    Androidタイマーは.cancelを無視しているようです

  3. 3

    mypyはどのようにしてソースファイルの1行を無視できますか?

  4. 4

    継承を無視して、クラスが特定のタイプであるかどうかを確認するにはどうすればよいですか?

  5. 5

    SqlcommandANDは最初のパラメータを無視しているようです

  6. 6

    Xamarin.iOSのUIWebViewは外部CSSスタイルを無視しているようですか?

  7. 7

    cppcheckで特定のファイルタイプを無視するにはどうすればよいですか?

  8. 8

    cppcheckで特定のファイルタイプを無視するにはどうすればよいですか?

  9. 9

    ディクトタイプはmypyを使用するTypeVarでは機能しませんか?

  10. 10

    タイトルの横にあるアイコンを無視して、タイトルを中央に配置するにはどうすればよいですか?

  11. 11

    MyPyでは、制約付きTypeVarを共変にすることはできませんか?制約されているが共変のkey-valタイプを使用した一般的なdictの定義

  12. 12

    SpringMessageSourceはプロパティfallbackToSystemLocaleを無視しているようです

  13. 13

    SpringMessageSourceはプロパティfallbackToSystemLocaleを無視しているようです

  14. 14

    AndroidはonActivityResultのsetResult呼び出しを無視しているようです

  15. 15

    DateTime.Parseは文化を無視しているようです

  16. 16

    numpy.genfromtxtはdtypeを無視しているようです

  17. 17

    アセンブリバージョンを無視して、.NETでタイプを検索するにはどうすればよいですか?

  18. 18

    WordPressのdo_actionフックは、保存されていないカスタマイザーの変更を無視しているようですか?

  19. 19

    `rm`がエスケープを無視しているように見えるのはなぜですか?

  20. 20

    Webpackは私のtypescriptローダーを無視しているようです

  21. 21

    Makeは私のCFLAGSとLDFLAGSを無視しているようです

  22. 22

    魚の殻はLD_LIBRARY_PATHを無視しているようですか?

  23. 23

    Javaは私のtoStringメソッドを無視しているようです

  24. 24

    @RefreshScopeはMockitoのモックを無視しているようです

  25. 25

    TypeVarを使用してMyPyのパラメーターでデコレーターを入力すると、予想される無人タイプが生成されます

  26. 26

    Mavenはwebappのソースとターゲットを無視しているようです

  27. 27

    プレイヤーの物理(ローリング)を無視して、弾丸を直接前方に放出するにはどうすればよいですか?

  28. 28

    Makefileはフラグを無視しているようです。どうして?

  29. 29

    Makefileはフラグを無視しているようです。どうして?

ホットタグ

アーカイブ