pythonのOptional型で以下の場合castが必要です。
python
1a: Optional[int] = 0 2 3def add_one(x: int) -> int: 4 return x + 1 5 6a = cast(int, a) 7add_one(a)
結果は1
python
1a: Optional[int] = 0 2b: int = 0 3 4assert a == b
結果はTrue
一方で比較の時にはcastが不要です
比較する時にcastが必要になるケースはあるのでしょうか?
* 一切使われてないadd_oneは何でしょう?
* コードはコードブロックの中に書いてください。インデントが消えたりするので特にPythonは意味がわからなくなります
コードの一部が欠けていませんか?
> castが必要です
なにのために「castが必要」と言っていますか? IDEやlintの警告解消だと思いますが、そのあたり「なんのツールか」「どこがどんな警告になるか」を追記するといいかと思います。
コードはコードとして読めるようにしてください。
https://teratail.com/help#about-markdown
https://teratail.com/help/question-tips#questionTips3-5-1
を参考に。コードを選択して <code>ボタンがいいでしょう。
変更しました
> castが必要です
なぜ? なにに必要?
https://qiita.com/kenta1984/items/169e5dcbdbf0b4c8af27
上記の記事のケースで
ypeError: '<=' not supported between instances of 'str' and 'int'
というエラーメッセージが出ています。
これをOptional[int]とintで行う場合はエラーなく動きます。
Optionalの場合はこのcastをする必要はないのかという質問でした????♂️
(情報をこの欄に書かれても困りますので質問を編集してください)
14:01 のコメントの主旨は、strとintを比較するとエラーになるが、Optional[int]とintの比較をするとエラーにならない。「castをする **必要がない** のはなぜか?」ということかと思います。(それは質問として理解できます)
私が質問に書いて欲しいと思ったのは、「質問の上のソースでcastが **必要だと思っている** のはなぜか?」でした。castは"何もしない関数"なので、実行時に必要になることは決してないはずなのです。
もしかしたら、上のソースは不要で、下のソースだけを書いてこうするとエラーだがこうするとエラーにならないがこれはなぜか? と聞けばよかったのかもしれませんが、とはいえ上のソースでなぜ必要だと思っているのかはどうしても気になりますね。
それはつまり、cast関数を誤解しているのだろうと想像できるからですが、それがハッキリしないと **何を回答していいのか** が明らかではないです。
回答1件
あなたの回答
tips
プレビュー