Pythonのお勉強 Part75 (729レス)
1-

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
1: デフォルトの名無しさん (ワッチョイ 33d8-PysV) [sage] 04/04(金)01:47 ID:UMpXJcmx0(1/4)
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024

↑スレ立てる毎に減るので、減ってたら3つに補充すること。

※前スレ
Pythonのお勉強 Part74
2chスレ:tech
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
710: デフォルトの名無しさん (ワッチョイ 5b2a-ycC0) [] 08/12(火)10:36 ID:JQsdcePx0(1)
>>707
なんか古めかしいよね。
型は決めずに void 型ポインタとしていろいろ受け付けるみたいな。
711: デフォルトの名無しさん (ワッチョイ f6c1-1ngM) [sage] 08/12(火)10:36 ID:46uwwH/J0(3/8)
静的型チェッカーは、onにすると基本的には全コードについて型チェックをするものだと思っていたけど、そこは型チェッカーの設定次第で調整できるのかな。あとはAny……。
712: デフォルトの名無しさん (ワッチョイ 2398-a/Iv) [] 08/12(火)10:46 ID:Gkg/fED60(1)
typescriptみたいに型システムを追加したPythonのスーパーセット作ればいいんだよ
713
(1): デフォルトの名無しさん (ワッチョイ de01-/C6k) [sage] 08/12(火)10:54 ID:ANRO+El50(1)
>>706
Protocol使う場面では?
structual typingでよければだけど
714: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 08/12(火)11:00 ID:lkNbq5IJ0(4/4)
人間の管理能力は限界があるので、
人間側が間違わずに作るんじゃなくて、
最低限のことしか考えなくても安全に動作する方向に進化している

全員でそれをやると進まないので、
一部の頭いい人だけC言語でかっちり作る両輪体制
715
(1): デフォルトの名無しさん (ワッチョイ f6c1-1ngM) [sage] 08/12(火)11:10 ID:46uwwH/J0(4/8)
>>713
ProtocolについてはロバストPytnonに出てきたのをちょっと読んだくらいしか知識がないのだけど、こういうときに使えるものなのかな。: list[base] という型指定はライブラリの中でされていて書き換えるのは躊躇されるので、そうだとするとちょっと難しいのかなと。
716: デフォルトの名無しさん (ワッチョイ cb01-/C6k) [sage] 08/12(火)13:23 ID:AyHSyTNk0(1)
>>715
それはライブラリ側の型ヒントが間違ってるか
自分が入れようとしている要素の型が間違ってるか
どちらかじゃないの?

ライブラリ側の型ヒントが間違ってると確定できてないうちは
自分が間違ってる前提で対応したほうがいいように思う
717
(1): デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 08/12(火)14:21 ID:46uwwH/J0(5/8)
GUIライブラリのwidgetコンテナで、格納される具体的なwidget群を属性widgeds : list[widget] に受け取るみたいな感じなんだよね。
container.widgets = [ label(), button(), textbox(), …… ] (label, button, textbox等は全てwidgetの部分型)みたいな感じで配置するんだけど、そこで706みたいな警告が出たり出なかったりする。
ありがちな状況なので、たぶん定石的な対処方法があるんじゃないかと思うんだけど。
718: デフォルトの名無しさん (ワッチョイ df01-/C6k) [sage] 08/12(火)15:24 ID:PiEjVoIs0(1/3)
>>717
list[widget]の型にwidgetのサブクラスのインスタンスを入れてもエラーにはならないはず
list[widget]の型が要求されている箇所にlist[label]型の変数を渡してるとかなのでは?
719
(1): デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 08/12(火)15:45 ID:46uwwH/J0(6/8)
Pytnonの型チェックはあくまでもヒントだからエラーというか警告だけどね。自分も比較的最近知ったことだから勘違いがあるかもしれないけれど、listはmutableコンテナだから共変ではないんだって。だから、A <: B(Bが上位型でAはその部分型)のときでもlist[A] <: list[B] にはならないらしいよ。
720: デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 08/12(火)16:10 ID:46uwwH/J0(7/8)
たしかにlistの要素として、その型宣言時の要素型のサブクラスのインスタンスを入れるだけなら特に問題ないはずだとは自分も思うんだよね。
717のcontainer.widgets = [ label(), button(), textbox(), …… ] は、両辺の式の型の間に互換性がない(listは非変なので)点に問題があるということだとすると、container.widget.extend( …… ) とかの書き方にしたら大丈夫なんだろうか。ライブラリのリファレンスとかにはそういう書き方は出てこなかったけど。
721: デフォルトの名無しさん (ワッチョイ df01-/C6k) [sage] 08/12(火)16:18 ID:PiEjVoIs0(2/3)
>>719
型チェッカーがエラーと報告するならエラーでいいよ

listが共変でないというのは要素型のサブクラスはlistに入れられない話ではない

これはNG
mylist: list[label] = [label]
widgets = mylist

これはOK
widgets = [label]

これもOK
widgets = [label, button, textbox]
722: デフォルトの名無しさん (ワッチョイ df01-/C6k) [sage] 08/12(火)16:34 ID:PiEjVoIs0(3/3)
OKなはずなのにエラーが出てるのなら最小限の再現コードをpyrightのplaygroundにでも上げてもらったほうがいいかもね
723
(1): デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 08/12(火)16:57 ID:46uwwH/J0(8/8)
なるほど、たしかにそれだと警告は出ないね。短い再現コードが出せるようならやってみるけどちょっと難しそうかな。たぶん代入文の右辺について、型チェッカーが(list[widget]と互換性のない)型情報をコード内の別のところから得ちゃっているということなんだろうと思うけど。
724
(1): デフォルトの名無しさん (ワッチョイ 9a02-QbuV) [sage] 08/12(火)19:52 ID:CDoCkaEH0(1)
>>723
型を明記しないとエラーとかってできる?
VBAみたいに

C++のほうが慣れてるから、そのほうがええわ
725: デフォルトの名無しさん (ワッチョイ 4e10-1ngM) [sage] 08/12(火)21:31 ID:i9fPXIIb0(2/2)
エラーにできるかというのが、静的型付けができていないコードの実行を自動的に抑止できるかという意味なら、Pytnon単体ではムリじゃない? あくまでも型「注釈」に過ぎないわけだし。でも、型チェッカーの方でそういう設定はあるんじゃないかなぁ。
726: デフォルトの名無しさん (ワッチョイ cb01-X2XY) [sage] 08/12(火)22:31 ID:jU+JMCmR0(1)
>>724
pyrightのstrict modeを試してみるといいと思う
727: デフォルトの名無しさん (ベーイモ MM06-ZDX3) [sage] 08/12(火)22:41 ID:nRaft4INM(1)
Pythonの型ヒントって型推論が許されてるけどどこまでそれが効くかはチェッカーの実装依存なんだよね
つまりチェッカーからすると型が不明というのは多くの場合において自身の型推論がショボいことを意味するわけで、
不明だからエラーにするというのは筋が通らないわけよ
せいぜい引数と戻り値に方指定を必須にするくらいだね
728: デフォルトの名無しさん (ワッチョイ 7602-7soU) [sage] 08/12(火)23:05 ID:DyWlhw4u0(1)
実行時まで型が決まらん、というのまであるしなあ
729: デフォルトの名無しさん (ワッチョイ 8a9f-XAuV) [sage] 08/12(火)23:06 ID:6cjc6Wvo0(1)
商用プログラム書くならパフォーマンス犠牲になってもランタイムの型チェックがほしい
こんどしれっとtypeguardいれてみようかな
AI支援もあるし猛烈に反対はされなそう
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.011s