Pythonのお勉強 Part73

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ f610-G7il)
垢版 |
2024/06/06(木) 08:48:10.07ID:DsazphEm0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

※前スレ
Pythonのお勉強 Part72
https://mevius.5ch.net/test/read.cgi/tech/1703659345/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2024/07/17(水) 01:20:38.51ID:Oiv09A9S0
>>196
あと、
クラス変数とインスタンス変数が慣れないな

C++から見ると
2024/07/17(水) 10:28:37.81ID:ArDuB9vV0
どこか簡単にすると
別の場所がぐちゃぐちゃになる
2024/07/17(水) 10:29:22.94ID:ArDuB9vV0
>>205
あの説明まじでダメだと思うけどみんなコピぺしてるな
209デフォルトの名無しさん (ワッチョイ 897c-hD31)
垢版 |
2024/07/17(水) 12:54:20.89ID:yeE+g+2L0
車と動物で良いんだぞ
オブジェクト指向理解すればするほど良い例だと分かる

入門向けとしてはファイナルファンタジーで教える方が良いかもしれない
ファミコン版のFF3とかが良い
2024/07/17(水) 13:25:01.62ID:eTk+Gzw70
継承とか多態とかの概念を
初めから教える必要あるんかな
同じ用途のデータを混乱しないように一まとめにして
専用関数も紐付けしておくくらいの理解から始めればいいと思うんだが
2024/07/17(水) 13:28:16.43ID:HgZgBdgi0
スレ違い
212デフォルトの名無しさん (ワッチョイ 897c-hD31)
垢版 |
2024/07/17(水) 13:41:50.13ID:yeE+g+2L0
>>210
データを纏めるだけなら構造体で良い

FFみたいにキャラのステータスが状態
そのキャラのジョブが出来る行動(ジャンプや白魔法や黒魔法)を振る舞いとして定義できる事に意味がある
2024/07/17(水) 13:52:54.44ID:VcSrM74t0
そんな大したもんじゃないよ
関数をライブラリ化して便利に使おうとしても、
どういうデータを渡したらいいかを熟知しないと使えない

データ形式もライブラリ側で指定したのがオブジェクト
2024/07/17(水) 14:31:22.91ID:eTk+Gzw70
>>212
振る舞いなんて抽象化するより
単純に専用関数って思うくらいで十分だと思うけどな
2024/07/17(水) 18:58:27.34ID:JDqvl6rk0
>>209
いや、あれってオブジェクト指向をわかっている人が、その知見水準で説明してるから
そもそもオブジェクト指向ってなあに?って言う人にとってはattributeErrorなんだわ
2024/07/17(水) 19:06:26.49ID:VcSrM74t0
粗く括った対象をオブジェクトと呼びたがるのは、
継承の説明をしたいからだけど、
実際には継承しまくって全体が矛盾なく収まるクラス設計なんかできない

継承なんか考えないか、1代継承できたらラッキーくらいでいい
2024/07/17(水) 19:43:33.34ID:yBuA7zY80
データに作法がついてくる構造は使い勝手良いけど
動くことしか興味がなくって
メソッド名や引数のキーワード設計を軽視してると残念なきもちになる
2024/07/17(水) 19:50:28.46ID:VcSrM74t0
データから説明するからメソッドが付属物なんだよな

メソッドが本体
このモジュールはこんなことができます、という売りの部分
その為に満たすべきデータの条件を内部で整えてくれる仕組み
2024/07/18(木) 12:22:18.23ID:2Xm4Ca7G0
>>218
メソッドは振る舞いにしか過ぎない
2024/07/18(木) 13:31:52.27ID:U9nRGPFU0
車とかキーとか、分かんないよな
カジノとかの方が分かりやすいかも

いったんユーザーインスタンスを作ってデフォルトのコインを何枚かもらったら
メソッドであるポーカーとかブラックジャックをやっても
他の大勢ユーザーとコインが混ざることがない、とか
2024/07/18(木) 15:23:46.03ID:OuPynLlO0
自分が読んだ本はRPGのモンスターだったわ
222デフォルトの名無しさん (ワイーワ2 FF42-U8Y+)
垢版 |
2024/07/18(木) 19:09:34.76ID:GUg+Zpj4F
やたらゲームの実装で説明しようとする本があるけど、無駄な情報なんだよあ。

オブジェクト指向設計はゲームのキャラクターなどに適用するのは8ビットコンピューター時代から存在する。

特にC言語の構造体を使えばオブジェクト指向の設計にできたため、オブジェクト指向設計が良いところでオブジェクト指向を用いるのは良いが、そうでないところでオブジェクト指向を適用するのは混乱を招くだけ。
2024/07/18(木) 19:42:26.05ID:vMiWDkdR0
何か単一の作りたいものがあって、OOPが向いてる向いてないというのは無い
OOPでなくても作れるし、OOPのせいで手間が増える

生産性とか保守性とか、巨大すぎて手に負えないとか、
割とマイナスな要因でOOPを取り入れる
組み込み用途はOOPのデメリットが致命的なので、今でも素のC言語で書いている
224デフォルトの名無しさん (ワイーワ2 FF42-U8Y+)
垢版 |
2024/07/18(木) 19:54:43.69ID:GUg+Zpj4F
>>223
それは単にオブジェクト指向設計を全否定しているだけで、オブジェクト指向の話になっていない。
2024/07/19(金) 00:52:01.61ID:Aa0/4EKh0
pycharmいいわ
比較とかある
ファイルを並べて違う箇所がハイライトされたりする
226デフォルトの名無しさん (ワッチョイ 768e-6R/B)
垢版 |
2024/07/19(金) 03:30:53.31ID:GYhwgtKN0
>>225
そんなのよくある機能だろ
他を知らない馬鹿なのでは?
227デフォルトの名無しさん (ワッチョイ 7a50-01F0)
垢版 |
2024/07/19(金) 05:33:45.75ID:+oFdaKCd0
石丸伸二さん取材の最前線

「取材不足」さんのYouTubeチャンネル
https://youtube.com/@shuzaibusoku

「取材不足」さんのX(ツイッター)
https://x.com/shuzaibusoku7

石丸伸二さんは天才ですね!
228デフォルトの名無しさん (ワッチョイ 7a50-01F0)
垢版 |
2024/07/19(金) 05:34:31.98ID:+oFdaKCd0
>>225
比較だけならWinMergeでいいんじゃないのか?
229デフォルトの名無しさん (アウアウエー Sa02-IocT)
垢版 |
2024/07/20(土) 11:11:48.39ID:9R/FGJUia
>>217
C で FILE * を使ったことがある人ならオブジェクト指向の説明がしやすい
だが C++ の iostream お前は糞だ
2024/07/20(土) 12:41:36.45ID:6CTBtgMFa
>>225
いいよね、全てPyCharmの中で完結するし
231デフォルトの名無しさん (ワッチョイ 7a5b-U8Y+)
垢版 |
2024/07/20(土) 17:53:01.97ID:pd3T6vIK0
>>229
関数へのポインタを理解している時点でオブジェクト指向を理解している
232デフォルトの名無しさん (ワッチョイ 7a5b-U8Y+)
垢版 |
2024/07/20(土) 17:54:01.71ID:pd3T6vIK0
統合開発環境から始めさせるのは理解に苦しむ
2024/07/20(土) 18:02:26.59ID:szaKrRmH0
ポインタとかそんな内部事情は知らなくても使えるのがオブジェクトの建前
実際には建前なんか崩壊してて、皮一枚かぶせただけ
234デフォルトの名無しさん (ワッチョイ 7a5b-01F0)
垢版 |
2024/07/20(土) 18:42:25.33ID:pd3T6vIK0
>>233
そんなの誰もがわかるよ。

オブジェクトという概念が後付けだったせいで混乱しているのがPython。

最初に作った人間がC++の問題点に気づかなかったせいで、C++と同じ問題を起こした。

しかもタチが悪いのが、オブジェクトとオブジェクトでないものをすべてオブジェクトと言い出したところ。
2024/07/20(土) 18:48:16.84ID:szaKrRmH0
オブジェクト指向のオブジェクトは雰囲気だから何がオブジェクトかの定義なんか無い
pythonのオブジェクトは定義が厳密
236デフォルトの名無しさん (ワッチョイ 7a5b-01F0)
垢版 |
2024/07/20(土) 18:52:10.07ID:pd3T6vIK0
Pythonのオブジェクトの定義はまだフラフラしている最中
2024/07/20(土) 18:53:52.22ID:rx6imyFG0
>>231
関数ポインタとかは実装の詳細だよ
オブジェクト指向のための各機能が具体的にどう実装されてるかという実装の詳細を理解することととオブジェクト指向そのものを理解するのとは全く別のこと

本当に大事なのは言語やパラダイムに関係ないオブジェクト指向よりも高次の抽象概念を理解してその実現手段としてのオブジェクト指向を理解すること

関数ポインタからは辿り着けない
238デフォルトの名無しさん (ワッチョイ 7a3b-01F0)
垢版 |
2024/07/20(土) 19:04:56.17ID:pd3T6vIK0
関数へのポインタを知らない人間が語っても意味はない。
C/C++は物理アドレスを辿ることを前提とした設計にならないなら採用しない方がいい。

OSを作るために作ったプログラミング言語と、遊びで作ったPythonでは最初の発想が異なる。
2024/07/20(土) 19:16:16.59ID:szaKrRmH0
なんで関数ポインタでそんなに喜べるんだ
2024/07/20(土) 19:32:32.03ID:5OHSUBrx0
せっかく抽象化の仕組み作ってんのに
何かしたらポインタが出てくるという
悲しき言語
241デフォルトの名無しさん (ワッチョイ 7a3b-U8Y+)
垢版 |
2024/07/20(土) 19:37:16.96ID:pd3T6vIK0
>>239
オブジェクト指向設計ができるから
242デフォルトの名無しさん (ワッチョイ 7a3b-U8Y+)
垢版 |
2024/07/20(土) 19:38:32.16ID:pd3T6vIK0
>>239
変数と関数へのポインタを含む構造体をC言語で作ると関数をメソッドのように呼び出せる
2024/07/20(土) 19:47:49.59ID:szaKrRmH0
Bボタン押してると速く走れるくらい基本技だよ
244デフォルトの名無しさん (アウアウエー Sa02-hIhh)
垢版 |
2024/07/20(土) 19:50:01.72ID:JfCCJ2oka
C++にはvtableという隠しメンバがおるんやで
245デフォルトの名無しさん (ワッチョイ 7a3b-U8Y+)
垢版 |
2024/07/20(土) 20:09:41.06ID:pd3T6vIK0
>>243
それハードウェアの割り込みだから別物
2024/07/20(土) 22:16:10.12ID:HiyJxQDg0
>>243
たとえが古すぎる
だが100%同意する
247デフォルトの名無しさん (ワッチョイ 5312-aLFS)
垢版 |
2024/07/22(月) 21:07:44.56ID:SbBOLwbq0
言葉が古すぎる
2024/07/22(月) 21:17:26.98ID:eB6Mh8rN0
関数をメソッドのようにってメソッドは関数ちゃうんか?
2024/07/22(月) 21:52:20.09ID:KKI1xebv0
関数に入れられるのは数値やデータだから
モノを扱うなら関数ではなくメソッド
2024/07/22(月) 21:56:20.98ID:IoUmr5an0
自由関数をメンバ関数のように、って言いたいんだろうな
2024/07/22(月) 22:19:25.73ID:kAQiF9kn0
>>248
クラスやメソッドがないC言語で`foo.bar()`とか`foo->bar()`のように
構造体のインスタンスをレシーバーっぽく使って関数を呼び出す話だと思うよ

マジでBダッシュレベルの基本技だけど
C言語使わなければ知らなくても何の問題もない
メソッドもファーストクラス関数もない言語とかもうC言語以外に触れる機会無いから
2024/07/23(火) 06:59:40.67ID:tXXTtv/k0
>>249-251
そういうことか
C言語にはメソッドが無かったからなのね
2024/07/23(火) 07:10:17.60ID:4XhDIIO5M
XView はC言語用のAPIだけどメソッドはあったぞw
254デフォルトの名無しさん (ワッチョイ 5312-FUF1)
垢版 |
2024/07/23(火) 17:33:28.33ID:TPPfHQM20
C言語の話なのにC++の話だと思う人間がいるように、C++は失敗しているプログラミング言語。

オブジェクト指向でないのにPythonはオブジェクトという用語を取り入れたせいで、初心者もそうでない人間も気持ち悪いものになっている。
2024/07/23(火) 18:06:09.22ID:xnSNk6y30
いやオブジェクト指向だよ
別にそうでない書き方もできるだけ
2024/07/23(火) 20:26:56.80ID:O28HvEHi0
perlは元々は全然オブジェクト指向じゃなかったのに、
bless追加するだけでオブジェクト指向化した

あの手法は見事だし、オブジェクト指向なんて所詮はその程度のもの
C++は言語仕様すら変えずにプリプロセッサでやっていて、
努力は認めるけどろくなもんじゃない
257デフォルトの名無しさん (ワッチョイ 4967-MarV)
垢版 |
2024/07/23(火) 21:24:32.99ID:8wiIiKG40
C言語だってマクロで頑張ってオブジェクト指向プログラミングしてたりするライブラリもあるしね。GTKとかね。読めるまでがつらすぎるけど。
258デフォルトの名無しさん (ワッチョイ 53be-c9uF)
垢版 |
2024/07/24(水) 19:28:21.05ID:mAHVpeHr0
Django得意なやつおらん?
259デフォルトの名無しさん (ワッチョイ 53be-c9uF)
垢版 |
2024/07/24(水) 19:29:04.05ID:mAHVpeHr0
主テーブルが外部キーないんやが内部結合の方法しりたいんよ
2024/07/24(水) 19:54:12.53ID:aZhJNMHQ0
生成AIに聞けば?
261デフォルトの名無しさん (ワッチョイ 53be-c9uF)
垢版 |
2024/07/24(水) 20:29:39.34ID:mAHVpeHr0
なんでもAIに頼るな!
2024/07/24(水) 20:44:00.92ID:dGeLPp8h0
AIは地球を救うのか?
2024/07/24(水) 22:13:22.89ID:BHlXpcoL0
>>259
DBMS側で外部キーが設定されてなくても
モデル側で外部キー設定してれば普通に結合できない?
264デフォルトの名無しさん (ワッチョイ 5168-h7bd)
垢版 |
2024/07/25(木) 08:44:18.73ID:KP2cFN040
地球を救うのではなく地球に巣くうんだよ
265デフォルトの名無しさん (アウアウエー Sae3-hEcB)
垢版 |
2024/07/25(木) 16:19:53.06ID:EE/eILqDa
卓球のAIちゃんは今何してるのかしら
266デフォルトの名無しさん (アウアウエー Sae3-hEcB)
垢版 |
2024/07/25(木) 16:20:33.95ID:EE/eILqDa
>>258
pythonスレかDjangoスレで
267デフォルトの名無しさん (ブーイモ MMb5-0U8O)
垢版 |
2024/07/25(木) 17:56:40.20ID:d36Rq1nwM
>>259
「主テーブル」という用語はリレーションデータベース用語ではない。
2024/07/25(木) 18:57:39.87ID:WPUIh9u4M
>>267
「リレーションデータベース」という用語はリレーショナルデータベース用語ではない。
2024/07/25(木) 19:08:17.92ID:6w1rxeNv0
エモーショナルデータベース
2024/07/25(木) 21:26:05.65ID:AkRaRHXq0
外部キーの有無なんて結合には関係ないだろ
271デフォルトの名無しさん (ワッチョイ 5367-0U8O)
垢版 |
2024/07/25(木) 23:14:59.95ID:RikENVvZ0
「主テーブル」という用語を使うSIerがあるが、これはCOBOL用語なのかな?
272デフォルトの名無しさん (ワッチョイ 5367-0U8O)
垢版 |
2024/07/25(木) 23:17:47.16ID:RikENVvZ0
FROM句の最初に書くテーブル名を言っているのはわかっても、意味があるのか疑問に思っている。

処理方法を指示している言い方がひっかかる。
2024/07/25(木) 23:47:46.17ID:AkRaRHXq0
駆動表のことかな
274デフォルトの名無しさん (ワッチョイ 5367-0U8O)
垢版 |
2024/07/26(金) 00:52:40.61ID:JylNHC7t0
>>273
その駆動表の説明をすると日本人には逆じゃないのかという用語になるので使えない。

ネステッドループだと外側になるから、外部表と呼ばれるが、駆動表を外部表と言ってわかる人間はほとんどいない。

図示がどれだけ重要なのか認識してほしいよな。
275デフォルトの名無しさん (ワッチョイ 5367-0U8O)
垢版 |
2024/07/26(金) 00:53:16.62ID:JylNHC7t0
ドキュメンテーションがいかに重要かわからないと戦力にならない。
2024/07/26(金) 07:59:40.23ID:74eajxja0
わかりにくいのは駆動表じゃなくて外部表内部表の方なんじゃないかな
2024/07/26(金) 10:10:40.76ID:RKHjG1e00
スレチなのでスレ立てるまでもない質問スレに行ってくれないか
2024/07/26(金) 10:29:45.96ID:wRuEZapv0
適用業務アプリーケーションとかな
2024/07/26(金) 11:35:08.08ID:Tac5kJOn0
鍵盤!
2024/07/27(土) 00:41:14.80ID:fo+WsYuB0
range(7)で0から6ってのがどうしても納得できない
2024/07/27(土) 00:53:11.08ID:gqmjLcpv0
range(0,7)は納得できる?
2024/07/27(土) 03:00:27.09ID:LWZ3F2id0
range(0)についてかんがえてみて
2024/07/27(土) 06:38:23.86ID:utWAOMso0
for (i = 0; i < 7; i++)
から0と7を抜き出しただけなんだよな
初期値と終了条件を与える
初期値が0の場合は省略可能で、終了条件は個数と同じになる
2024/07/27(土) 17:57:23.49ID:ri81ZY/A0
0も数字だからです
2024/07/27(土) 22:46:05.92ID:fo+WsYuB0
>>281
いや単にそう決めただけならいいんだが
すげーバカが設計したなあって思うよ
2024/07/27(土) 23:14:25.46ID:LWZ3F2id0
具体的には?
0 <= n < N なのは合理的だし問題ないけど
それが range(N) なのはドキュメンテーション悪いってならわかる
2024/07/28(日) 00:22:53.60ID:DlUEjl6T0
>>281
直前まで返すって覚えれば、
そう言うもんかー、てなる
2024/07/28(日) 08:19:00.94ID:YeQTV+6P0
0も数字だからです
2024/07/28(日) 16:04:26.52ID:8+9X2FyV0
>>286
根拠ゼロw
perl のリストリテラルでいいだろwガイジw
map(0..6)
2024/07/28(日) 16:17:45.56ID:PfNOVc/80
そう書きたくなるのは理解できるけど筋が悪いんだよな
(0 .. $num-1)
という書き方は気持ち悪いだろ
2024/07/28(日) 16:33:24.45ID:qukqof110
pythonが嫌なら使わなきゃいいのに
馬鹿にしながら依存してるとか
そっちの方がよっぽど重症だわ
2024/07/28(日) 16:42:25.73ID:FpEcEwXL0
ほんとそれな
他の言語で違う書き方のものはいくらでもある
2024/07/28(日) 16:46:36.09ID:D6cM4xic0
デフォルトがそうなってるのは0オリジンで配列アクセスのために使うからって理由がわからないなら
単にセンスがない
2024/07/28(日) 16:51:30.23ID:3fX6aheH0
>>290
それはどっちもどっちでしょ
range(start, end+1)と書く必要がある場合もあるわけなんだから

range(start, stop[, step])にrange(stop)も持たせたのは
別の関数を用意すると名前空間を汚染するからだと思うよ
ビルトイン関数を多用するPythonの弱点ではあるけどね

いいAPI設計ではないけど半日もすれば慣れるし
in演算子のように明らかなデメリットがあるわけでもないから気にならない
2024/07/28(日) 16:57:26.50ID:3fX6aheH0
>>293
配列アクセスはrangeじゃなくてsliceを使って下さいね
センスがあるなら
2024/07/28(日) 17:04:41.44ID:PfNOVc/80
range(start, end+1)
と書いた時点で筋が悪い
最後の要素のindexなんかをわざわざ持つような書き方はバグの元
2024/07/28(日) 17:13:34.21ID:FpEcEwXL0
>>295
スライスも範囲は同じだろ
何言ってんだ?
2024/07/28(日) 17:15:44.24ID:D6cM4xic0
0オリジンが嫌ならFortranでも使ってなさい
2024/07/28(日) 17:19:22.01ID:FpEcEwXL0
Rubyでいいんじゃない?
..や...演算子があるよ
2024/07/28(日) 17:38:40.75ID:PfNOVc/80
startとendを両方使う、というのがそもそもアウト
0から始めるのと、endを使わないのはセット
end=numにしたいなら、1から始めるべき
2024/07/28(日) 17:52:59.56ID:YeQTV+6P0
いつまで無駄な事に拘ってるのか
結論は「仕様です」で終わる話やろ
2024/07/28(日) 17:56:18.45ID:FpEcEwXL0
SwiftにはA..<BとA...Bがあるぞ
これが個人的には1番わかりやすい
2024/07/28(日) 18:02:26.09ID:PfNOVc/80
Swiftみたいに両方用意するのも手だな
その上で..<しか使わないのが読みやすくバグらない
range(5, 10)とだけ書かれても慣れてる人しか意味が判らない
2024/07/28(日) 18:26:18.00ID:3fX6aheH0
>>296
ユースケース次第だよ
Pythonの標準ライブラリでもrange(start, end+1)やrange(end+1)のパターンはたくさん使われてるよ
2024/07/28(日) 18:29:47.19ID:PfNOVc/80
内部で閉じてるのにそんな書き方してたら下手なだけ

内部的には0から始まるけど、人間が扱うIDが1から始まってる
みたいなことは普通にあるので、それに合わせる為なら仕方ない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況