- 1 名前:デフォルトの名無しさん [2019/03/18(月) 13:42:55.36 ID:+MPRGO7m.net]
- ★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その41【Ruby禁止】 mevius.5ch.net/test/read.cgi/tech/1549282930/ ◆PythonのHome Page www.python.org/ ◆まとめwiki ttp://python.rdy.jp/ ◆Pythonのソースコードをそのまま5ちゃんにコピペすると インデントが崩れるので こういうところ↓にはってきてください ttp://ideone.com/ Pythonするにはぷち手間あるのがめんどうかなぁ ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まず
- 152 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:37:23.77 ID:cyLDjoYG.net]
- でもクラス外から呼ぶときは、self なんて子供が使うような呼び名を使ってはいけないぞ
ちゃんと苗字a 、関数名前 で呼べ それが社会常識ってもんよ
- 153 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:37:34.32 ID:VTQPNSsp.net]
- 参照変数という考え方を学んだほうがいい
javaでの説明だけど、ここのサイトが分かりやすい www.kab-studio.biz/Programing/OOPinJava/
- 154 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:42:42.24 ID:susRoq6I.net]
- そこまで考え出すと、逆にかなり難しくなるんじゃないかな
pythonはCのラッパーだから、あまり低級な事を考えるとラッパーとしてどうなっているかも考える必要が出てくる 俺もラッパーとしてどう動いてるかなんて考えない。学習コストとリターンが全
- 155 名前:ュ見合ってない []
- [ここ壊れてます]
- 156 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:43:35.16 ID:1P02QAf5.net]
- self はjava, C のself と紛らわしいので
我が家の(wagayano) にしてみた。 https://i.imgur.com/374iPeL.jpg
- 157 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:43:48.37 ID:eKH7lBgF.net]
- Pythonで説明してくれてるとこあったぞぬ
ttps://crimnut.hateblo.jp/entry/2018/09/05/070000 self野郎くんはもうコテハン「self野郎」って名乗っちゃっておkだとおもうの
- 158 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:53:08.53 ID:1P02QAf5.net]
- yamada の 2222が出てくる
https://i.imgur.com/ZRmsej3.jpg
- 159 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:57:56.42 ID:pNXTHJSM.net]
- どうしてリストなどには属性をくっつけられないんだろう
a = [] a.x = 1 AttributeError: 'list' object has no attribute ‘x’
- 160 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 19:58:16.98 ID:KkuZPOOG.net]
- >>152
セルフ野郎って違うモノを想像しちゃって嫌だわぁw
- 161 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 20:16:30.57 ID:fbHrFGME.net]
- kivyを使う時にjupyter notebookだと画面が乱れてしまって上手く動きません
pyファイルを作ってコマンドからならちゃんと動くんだけど効率が悪いです。 jupyter notebookのような代替ソフトを知りませんか?m(_ _)m
- 162 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 20:23:33.14 ID:eKH7lBgF.net]
- >>156
OS書けよ
- 163 名前:デフォルトの名無しさん [2019/03/21(木) 20:23:39.72 ID:yLWBHIB/.net]
- ありがとう
勉強してきます
- 164 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 20:26:59.01 ID:eKH7lBgF.net]
- >>155はエロいやつw
- 165 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 20:27:36.58 ID:eKH7lBgF.net]
- >>154
後付け反対! ε=(`・ω・´)
- 166 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 21:01:07.00 ID:/qmYOdp9.net]
- どこの串カツ屋だよ
後付けくらい許してやれよ
- 167 名前:デフォルトの名無しさん [2019/03/21(木) 21:04:49.41 ID:yLWBHIB/.net]
- selfに参照渡しされるアドレスってのはインスタンスといいますが、インスタンスの引数のアドレスことではないのですか?
- 168 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 04:34:23.47 ID:4np0yjmV.net]
- [100,200,-50,150,-100]
こんな感じで一日毎のFXの収支が入った配列があった時 要素を順番に足して収支が積み上がるような配列を作りたいんだけど。。。 0+100=100 100+200=300 300+(-50)=250 250+150=400 400+(-100)=300 こんな計算をして [100,300,250,400,300] こんな配列を作りたいんだけどいい方法教えてエロい人 forとか使わないでシンプルなので頼んます><
- 169 名前:デフォルトの名無しさん [2019/03/22(金) 05:21:41.85 ID:jRDRMKF2.net]
- cumsum
- 170 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 05:29:25.13 ID:4np0yjmV.net]
- >>164
うわぁ、ありがとう 僕がイメージしてた通りの関数でした!! ぜひ使わせていただきます
- 171 名前:デフォルトの名無しさん [2019/03/22(金) 05:30:39.63 ID:khPW0F9t.net]
- >>163
普通にnumpyで加算すれば良いだけでは?
- 172 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 05:36:51.58 ID:4np0yjmV.net]
- >>166
numpyのcumsumですね! できました
- 173 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 11:46:18.44 ID:ZTaR0qbl.net]
- 前にも書き込ませていただいたものですが、
gtk3+python+webkit2でepubビューアを作っているのですが、現在のスクロール位置を取得したいのですが、 y_pos_js ="var x; x=document.body.scrollTop" def js_run(self, js_name, js_return=True): run_js_finish = self._js_finish if js_return else None self.viewer.view.run_javascript(js_name, None, run_js_finish, None); def _js_finish(self, webview, result, user_data=None): js_result = self.viewer.view.run_javascript_finish(result) if js_result is not None: value = js_result.get_js_value() self.js_value = value.to_double() print((self.js_value)) と書いても、0.0となってしまい、値を取得できません。 ひょっとすると、 https://havelog.ayumusato.com/develop/javascript/e332-android_scrolltop_refresh_delay.html ここのページにあるようにdocument.body.scrollTopは即座に反映されないのかもしれませんが(情報が古い?)、 javascirptがわからずどうすることもできません。 pythonのtimeで遅延させても無駄なようで、javascirptの方で遅延させるしかないのでしょうか? どなたかお知恵を拝借できると幸甚です。 https://stackoverflow.com/questions/52870923/webkit2-and-domdocument-javascriptcore-python3 上のpythonスクリプトの元ネタはここです。
- 174 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:54:11.57 ID:mlxJ4y7J.net]
- document.documentElement.scrollTop
- 175 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 13:10:50.39 ID:ZTaR0qbl.net]
- var x; x = window.scrollY;
としたら機能しました。どうもお騒がせしました。
- 176 名前:デフォルトの名無しさん [2019/03/22(金) 13:15:44.38 ID:vKzweDfk.net]
- この本ほかの本よりメリットどこにあるですか
https://www.amazon.co.jp/dp/4873117984
- 177 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 13:21:26.19 ID:g5h3mGP7.net]
- Ruby で、Selenium WebDriver なら、
execute_script で直接、JavaScript の命令文を実行できる TOPまでスクロール execute_script('window.scroll(0,1);') BOTTOMまでスクロール execute_script('window.scroll(0,10000);')
- 178 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 13:36:48.19 ID:f/f2Qmpp.net]
- >>172
クソ言語ruby勧めるのやめて
- 179 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 13:59:52.41 ID:E/4CSIEY.net]
- >>172
死ね
- 180 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 14:04:08.80 ID:aiMUayIq.net]
- >>173
seleniumはjava製ソフトで各種言語にドライバーが出てる。 pythonやnode向けドライバーのほうがよっぽど利用者多くてよくメンテされてる。 クソ言語信者は他人のフンドシで相撲とってるだけ。 java製ソフトにjavascript実行させてるのを誇るというギャグw
- 181 名前:172 mailto:sage [2019/03/22(金) 15:07:59.51 ID:g5h3mGP7.net]
- Ruby で、Nokogiri, Selenium WebDriver なら、
execute_script で直接、JavaScript の命令文を実行できる jQuery も実行できるから、CSS Selector で検索もできる。 複雑な検索は、Nokogiri で、Xpath でも良いし jsCode = <<"EOT" var text = $( "#btn1" ).text( ); $( "#parent" ).append( text ); EOT # JavaScript を実行 driver.execute_script jsCode
- 182 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 15:13:48.49 ID:E/4CSIEY.net]
- >>176
死ね
- 183 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 15:19:14.86 ID:aiMUayIq.net]
- driver.execute_script jsCode
↑javaのコードに ↑jsコード文字列 渡してるだけwwwww もちろんこんなのPython用ドライバーもnode用ドライバーもあって、 当然できることも同じ。 どころか不人気クソ言語用ドライバーよりよっぽどよくメンテされており使用者も多いw
- 184 名前:デフォルトの名無しさん [2019/03/22(金) 15:54:48.11 ID:t/nkQ3ne.net]
- Pythonにも言えるだろうけど、JavaScriptはwebのアセンブラみたいな地位だから変えられないけど、
型がないからデバッグが大変という事でTypeScriptとかelmとか出てるご時世に生のJavaScript動かせるって言うのも逆に危険じゃね? TypeScript動かせますとか、生JavaScriptの型検査出来ますとかでも無ければ、むしろ嫌われ機能じゃ。。。
- 185 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 16:19:38.63 ID:lvSXHllC.net]
- 文字通りの布教活動してないで、pycallのメンテでもしてて欲しいんだけど
サナダ虫言語くん
- 186 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:25:24.02 ID:ZTaR0qbl.net]
- 質問ばかりで申し訳ないのですが、
webkit2からjavascriptを呼んで値を取得するまではできたのですが、 その値を今度は別のjavascriptに渡して window.scrollto(0, self.js_value),) とやりたいのですが、どうすればpythonの値(self.js_value)をjavascriptに渡せるのでしょうか?
- 187 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 18:29:03.58 ID:KU+gzGwj.net]
- >>181
閉じかっこの数あってないぞ
- 188 名前:181 mailto:sage [2019/03/22(金) 18:49:26.10 ID:ZTaR0qbl.net]
- >>182
失礼しました。コピペを間違えました。
- 189 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 19:59:00.49 ID:p6G8Xbop.net]
- え?
で直さないの?
- 190 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 03:50:03.33 ID:oN2Crbw2.net]
- import pandas as pd
abc =[["a", 1, 2], ["b", 3, 4], ["a", 5, 6], ["b", 7, 8]] df = pd.DataFrame(abc) このデータフレームから、query関数を使って、 aを含む行だけを抽出したいのですが、エラーが出てしまいます。。。 df.query("0=='a'") どなたかお助けください。
- 191 名前:172 [2019/03/23(土) 06:05:42.92 ID:4V4ijAbJ.net]
- >>181
参考までに、Ruby で、Selenium WebDriver なら、 >>172 に書いたように、execute_script で直接、JavaScript の命令文(文字列)を実行できる execute_script( 文字列 ) TOPまでスクロール execute_script('window.scroll(0,1);') BOTTOMまでスクロール execute_script('window.scroll(0,10000);')
- 192 名前:デフォルトの名無しさん [2019/03/23(土) 07:43:05.24 ID:ydnViaEq.net]
- selfにはインスタンスが渡されるといいますが、インスタンスの何が渡されているんですか?selfを出力すると場所ということになりますが、場所にあるデータを渡しているのでしょうか?だとしたらそのデータはなんですか?
selfによってクラス内で変数が共有される仕組みがわからない codepad.org/Cpl7EKpb class test(): def __init__(self,var): self.v= var def func(self): print(self.v) print(self) print(vars(self)) a = test("aaa") a.func()
- 193 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 08:16:15.40 ID:hJSauuzM.net]
- >>187
何度も同じ事を質問してるけど、返信のレスの内容やサイトを見たのか
- 194 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 08:33:26.98 ID:ZeoqDrwt.net]
- こういうタイプはアセンブリ言語から順に勉強していった方がいいんじゃないかと思う
- 195 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 08:37:15.91 ID:4W6dBUsF.net]
- Pythonに代わる独自言語を開発したいとかかもしれない
- 196 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 09:09:46.45 ID:f3qHSm8q.net]
- >>186
参考にならないから消え失せろ。二度と来るな。
- 197 名前:デフォルトの名無しさん [2019/03/23(土) 09:42:24.98 ID:ydnViaEq.net]
- >>188
もちろん見たのですが、どういう形で渡されているかわからないのです クラス自身が渡されているとしたら class.class.v = var という構造になっているということですか?
- 198 名前:デフォルトの名無しさん [2019/03/23(土) 10:26:17.73 ID:ZeoqDrwt.net]
- >>192
関数はある程度理解してて自分で書くことができる?
- 199 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 10:40:50.71 ID:I3Pj7rcK.net]
- 「python クラス変数 インスタンス変数」とかでググれば説明サイトが大量にあるけど、
プログラミングそのものが理解できてない感じだよね
- 200 名前:デフォルトの名無しさん [2019/03/23(土) 10:50:20.39 ID:ydnViaEq.net]
- >>193
簡単な関数ならもちろんかけます def func(hikisuu): print(hikisuu) func("引数")
- 201 名前:デフォルトの名無しさん [2019/03/23(土) 10:50:59.12 ID:ydnViaEq.net]
- >>194
概念はなんとなくわかりますが、どういう形で渡されているかがわからないのです
- 202 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 10:51:50.16 ID:YnRhMPRR.net]
- >>194
説明できないの? 馬鹿なの?
- 203 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:03:23.41 ID:hJSauuzM.net]
- >>192
selfはtestクラスのインスタンスを指してる func()の第一引数にそのselfがあるんだから、そのメソッド内でselfのインスタンス変数にアクセス出来るのはなんにもおかしくないと思うんだけど
- 204 名前:デフォルトの名無しさん [2019/03/23(土) 11:10:08.58 ID:ydnViaEq.net]
- >>198
なんとなくわかってきました ただ、selfがtestクラスのインスタンスということであれば、testクラスの中にさらにクラスのインスタンスがあるという状態はおかしくないでしょうか?
- 205 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:17:15.12 ID:0qnTz56h.net]
- ここ数日これずっとやってるのか
PyConにくる小学生ですらもう少しマシ
- 206 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:21:18.94 ID:sBAP9hOD.net]
- >>200
でも完全にスレタイ通りなのだ
- 207 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:21:59.29 ID:oN2Crbw2.net]
- >>185です。
どなたかお助けください。。。 本当に困ってます。
- 208 名前:デフォルトの名無しさん [2019/03/23(土) 11:22:14.02 ID:ZeoqDrwt.net]
- >>195
じゃ仮に変数をまとめて入れられる変数が
- 209 名前:あるとする(変数の中に変数が入っている)
a = { hensu1 = "ABC" hensu2 = 22 } b = { hensu1 = "DEF" hensu2 = 55 } 変数にアクセスするためにはこうやるとする print(a.hensu1) // ABCが出力される b.hensu2 = 44 // bの中のhensu2に44が入る もう一つ仮に、関数をまとめられる変数があるとする(変数の中に関数が入っている) funcs = { def func1(hikisu): print(hikisu.hensu1) def func2(hikisu, var): hikisu.hensu2 = var } 中の関数を呼び出すにはこうやるとする funcs.func1(a) // ABCが出力される funcs.func2(b, 87) // b.hensu2 に87が入る [] - [ここ壊れてます]
- 210 名前:デフォルトの名無しさん [2019/03/23(土) 11:29:25.52 ID:7srBUnhE.net]
- >>192
>クラス自身が渡されているとしたら 誰がクラス自身なんて言った 渡されるのはクラス自身じゃない もう自分でソース読んでみるのもいいんじゃないですかね
- 211 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:34:13.97 ID:hJSauuzM.net]
- >>199
"testクラスの中にさらにクラスのインスタンスがあるという状態"という考えはどこから出てくるんや >>202 エラーを貼ったほうがいい
- 212 名前:デフォルトの名無しさん [2019/03/23(土) 11:34:24.50 ID:7srBUnhE.net]
- どう実装されていますかっていう質問でしょ
ソース見るのが一番早いよ C分からなくてソース読めないっていうなら、これ以上の説明も理解できないよ
- 213 名前:デフォルトの名無しさん [2019/03/23(土) 11:41:58.39 ID:VYeUbhBG.net]
- >>199
引数として渡されているだけなんだから何らおかしくない > testクラスの中にさらにクラスのインスタンスがあるという状態はおかしくないでしょうか? 自分の中で「こうあるべき」って感情的に決めつけてない? それの何がどうおかしいのか論理的に説明してみて
- 214 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 11:48:53.36 ID:oN2Crbw2.net]
- >>205
import pandas as pd abc =[["a", 1, 2], ["b", 3, 4], ["a", 5, 6], ["b", 7, 8]] df = pd.DataFrame(abc) df.query("0=='a'") pandasで上記コードを実行すると KeyError: False というエラーが出てしまいます。
- 215 名前:デフォルトの名無しさん [2019/03/23(土) 12:24:51.07 ID:ydnViaEq.net]
- >>204
渡されるのはインスタンスですよね クラスの中のselfではなくて、生成されたインスタンスの中にあるselfに渡されているということでしょうか?
- 216 名前:デフォルトの名無しさん [2019/03/23(土) 12:28:48.09 ID:ydnViaEq.net]
- >>203
ありがとうございます これは例えばのコードですよね? この波括弧(コレクション?)を使うとエラーが出るのですが
- 217 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:33:20.28 ID:jhd39dfA.net]
- >>209
クラスとインスタンスの違いが分かっていなかったのか >クラスの中のselfではなくて、生成されたインスタンスの中にあるselfに渡されているということでしょうか? そう クラスはあくまで設計図 実体を作って何かを行うのは全てインスタンス
- 218 名前:デフォルトの名無しさん [2019/03/23(土) 12:41:08.01 ID:7srBUnhE.net]
- クラスにも実体はあるし、クラス内の関数を呼び出したりもするけどね
- 219 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 12:43:45.55 ID:jhd39dfA.net]
- >>212
staticも考えたけど、もう終わらせた方がいいんじゃないかなって
- 220 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 13:55:46.82 ID:f3qHSm8q.net]
- >>212
超初心者にあれこれ詰め込んでも混乱するだけだろうし、多少の嘘は許容してまずは本当に基本的なことを大雑把に理解させないと一歩も先に進まないんじゃないかな。
- 221 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 15:46:32.76 ID:A1HHpCkB.net]
- 口だけは立派な先生方
self がなにか説明できない
- 222 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 15:55:15.05 ID:VsaUG60l.net]
- 説明はもう済んでるよ、理解出来てないだけ。
それも当然で、基礎知識が無いからどうしようもない このまま行けばC言語に手を出すことになるのだろう
- 223 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 15:59:25.81 ID:hJSauuzM.net]
- >>209
それでいい クラスから実体化しまインスタンスはクラスとは別のメモリ領域にある そのインスタンスの中に、selfというそのインスタンス自身をさすインスタンス変数があるということ 頼むからか>>149の1章から3章まで読んでくれ あんたの知りたいことがすべて書いてある そのサイト以上に簡単に説明してるところを俺はしらん(´・ω・`)
- 224 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 16:06:51.30 ID:zpuBZ1ay.net]
- マジで小学校で教えといて欲しい
- 225 名前:デフォルトの名無しさん [2019/03/23(土) 17:31:55.04 ID:ydnViaEq.net]
- ↑ありがとうございます
最後に一つ self.n= name とあったらself側が変数名で、nは属性という扱いで
- 226 名前:「いんですか? []
- [ここ壊れてます]
- 227 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 17:35:56.63 ID:oN2Crbw2.net]
- >>185です。
解決ができそうにないので質問をキャンセルします。 スレを移動します。
- 228 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 17:50:28.72 ID:A1HHpCkB.net]
- >>219
self は道標 n が変数名だ
- 229 名前:デフォルトの名無しさん [2019/03/23(土) 18:15:49.99 ID:ydnViaEq.net]
- 道標とは?
self.nで インスタンス化されたクラス/その中にある変数n というフォルダのような構造になっているという意味でしょうか?
- 230 名前:デフォルトの名無しさん [2019/03/23(土) 18:22:35.82 ID:ydnViaEq.net]
- インスタンスの構造を出力してくれる関数とかないでしょうか?
これがあれば理解できるかも
- 231 名前:デフォルトの名無しさん [2019/03/23(土) 19:16:34.22 ID:iMO+WCpL.net]
- ppront
pydoc
- 232 名前:デフォルトの名無しさん [2019/03/23(土) 20:15:49.89 ID:abrpiqJH.net]
- >>185
Python詳しく無いけど、Haskellで言うfilter関数見たいのが有るんじゃ無いのか? 自作しても良いと思うけど。 def filter(f,lst): newlst = [] for i in lst: if f(i) then: newlst.append(i) return newlst Haskellとの比較用にしか使ってないから、クラスとか知らんで悪いけど。
- 233 名前:デフォルトの名無しさん [2019/03/23(土) 20:30:07.59 ID:abrpiqJH.net]
- >>187
>>53で文句言われたpython初心者が別の言語での知見からの推測で良ければ? selfに入ってるのは__init__付けてない時はclass定義そのもののアドレス(参照)が入るみたい。(各インスタンスで別々の値を持てなかった) __init__付けるとインスタンスのアドレスが入るみたいね。 クラスによって(インスタンスの)先頭アドレスから何バイト先がメソッドのアドレスとか分かるから(その為のクラス定義)。
- 234 名前:デフォルトの名無しさん [2019/03/23(土) 20:31:20.91 ID:ydnViaEq.net]
- instance = test("hge")
pprint.pprint(instance) pprintしてもメモリの場所しか表示されないのですが、何か設定が必要でしょうか
- 235 名前:デフォルトの名無しさん [2019/03/23(土) 20:43:03.84 ID:ydnViaEq.net]
- もしかしてクラスを設計図としたインスタンス(の構造)には、クラスの宣言部分は含まれていないのですか?
class testclass(): def __init__(self,hoge): self.h = hoge def func(self): print(self.h) instance = testclass("output") instance.func() とあったら、instance部分の構造は def __init__(self,hoge): self.h = hoge def func(self): print(self.h) となってるわけですか?
- 236 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 20:50:14.72 ID:A1HHpCkB.net]
- >>222
ご明察のとおり だから、メモリ空間上に実体として存在するのは、 変数名.n なので、外部からアクセスするときには、 変数名.n でアクセスする。 self.n で朝とできるのは、同じ変数名インスタンス内部からだけという仕掛け
- 237 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 20:59:31.58 ID:gtm/8/iL.net]
- rubyのヘイトが溜まっていく…
- 238 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 21:17:04.29 ID:VsaUG60l.net]
- この子にはもしかしてrubyが似合うんじゃないかなって思っちゃった
- 239 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 21:18:50.51 ID:I3Pj7rcK.net]
- >>228
難しく考えすぎ self(正確には第1仮引数名).変数名があると、下記の順番で処理されるだけ 1. インスタンス変数が定義されていれば、それにアクセス 2. クラス変数が定義されていれば、それにアクセス 3. どちらも無ければインスタンス変数を作成 (参照だったら例外発生) Pythonインタープリタは、そう実装されているってだけ だから概念とか考えてもしょうがない はっきり言って、「selfに意味はない」
- 240 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 21:21:25.01 ID:lUpPBvQP.net]
- >>227-228
どーでもよくないことだが またインデント崩壊してるわ タイポが散見されるわで どうにもはや pprontはpprintじゃないとおもうぞ
- 241 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 21:22:53.90 ID:lUpPBvQP.net]
- >>232が すごくイイ!!(・∀・)こといった
selfをselfとかいとくことに 意味がないところでつっかかってんだ、 self野郎くんは
- 242 名前:デフォルトの名無しさん [2019/03/23(土) 21:30:04.14 ID:CpiI5eIt.net]
- 【人類は一つです(バカウヨ除外)】 世堺教師マiトレーヤ 【ユダヤから富を奪還し分ち合おう】
rosie.5ch.net/test/read.cgi/liveplus/1553306560/l50
- 243 名前:デフォルトの名無しさん [2019/03/23(土) 22:04:22.60 ID:abrpiqJH.net]
- >>232
selfはローカル変数かフィールド(クラス変数)かを見分けると言う意味はある。 メソッドの引数にする意味はないと思うけど。(他の引数と一貫性を保つ為?) class Myclass: def func(str): name = str #nameはローカル変数かフィールドか見分けられない。 そこでrubyは@nameとし、pythonはself.nameにした。 静的型言語だとクラス定義の時点でメソッドよりフィールドを先に定義するから、クラスで何個のフィールドが有るのか分かるけど、 動的型言語だと全メソッド見ないとフィールドが何個あるのか把握出来ない。 同じ使われ方してるフィールドが複数あっても気付きにくい。 __init__にフィールドの宣言と初期化を集約するとか、セオリー頼り。 class Myclass: def func1(self,str): self.name = str def func2(self,str): self.myname = str
- 244 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 00:18:34.34 ID:9O9Vp0iS.net]
- >>236
>メソッドの引数にする意味はないと思うけど。(他の引数と一貫性を保つ為?) それな 開発者は、次回には直しとけよ
- 245 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 00:26:51.70 ID:aL5blMH8.net]
- >>236>>237
開発者からの言葉 ・self不要論は死ぬほど聞いている ・以下が大きい理由 'foo'が 'C'のインスタンスであることを考えると、 パラメータリストで明示的な 'self'を必要とすることは、メソッドを呼び出すこれら2つの方法の間の理論的等価性を強化することになります。 foo.meth(arg)== C.meth(foo、arg) 俺には分からんかった 以下ソース neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html https://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay/
- 246 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 00:52:27.28 ID:9O9Vp0iS.net]
- バカな開発者だ
C なんてどうでもいいだろうが
- 247 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 00:54:37.72 ID:aL5blMH8.net]
- >>239
pythonはCのラッパーなんだけど
- 248 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 02:14:23.76 ID:zpFoB+Fk.net]
- Yo! yo! みんな喧嘩すんなYO!
- 249 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 02:59:34.53 ID:byiyxNX1.net]
- レペゼンpython、yeah
- 250 名前:デフォルトの名無しさん [2019/03/24(日) 05:01:07.62 ID:XxZqoAge.net]
- >>237
いあ、個人的にはメソッドの引数からフィールドを生成または使用してるのが分かって便利だから残してて欲しいが。
- 251 名前:デフォルトの名無しさん [2019/03/24(日) 05:39:07.49 ID:NAaHZN6A.net]
- pythonのC-APIは
CallObjectとか CallFuncとか CallMethodとか 使い分けてるよな
- 252 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 08:33:50.69 ID:XvYqXbWf.net]
- dive into python3を読んでIterator作ってみたら少し理解が進んだ気がする
dive into python3を何とか理解したレベルで次に読むべきものって何なんやろ
|

|