[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/21 16:44 / Filesize : 237 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その31



1 名前:デフォルトの名無しさん mailto:sageteoff [2016/10/12(水) 13:34:49.56 ID:CGbCriuU.net]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その30
echo.2ch.net/test/read.cgi/tech/1466569767/
関連スレ
Pythonのお勉強 Part51
echo.2ch.net/test/read.cgi/tech/1443700103/

◆関連リンク Python の Home Page
ttp://www.python.org/

◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
https://try.jupyter.org/

◆まとめwiki
ttp://python.rdy.jp/

52 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 16:40:34.16 ID:edLePn8r.net]
これでいけるだろ
list = []
while True:
n = input()
if not n:break
list.append(int(n))
list.sort()
print(list)

53 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 16:41:25.99 ID:edLePn8r.net]
n = input()
if not n:break
list.append(int(n))
この部分の前には空白入れてくれwhileの中身だから

54 名前:デフォルトの名無しさん [2016/10/14(金) 16:42:41.29 ID:dGS+DO1u.net]
ちなみにこの問題はあるサイトにある練習問題だ!最低ランクDの問題、経験者なら直ぐ解けないとヤバいやつ、だが正解率は68%だった…

55 名前:デフォルトの名無しさん [2016/10/14(金) 16:43:58.18 ID:dGS+DO1u.net]
>>52
ありがとうやってみる!

56 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 16:44:16.68 ID:edLePn8r.net]
5 enter 3 enter 2 enter enter なら 235
5 enter 3 enter 2 enter 9 enter enter なら 2 3 5 9
4 enter 2 enter 1 enter 5 enter 3 enter enter なら 1 2 3 4 5
何も入力せずにenter押せばその時までの数字をソートして出す

57 名前:デフォルトの名無しさん [2016/10/14(金) 16:44:18.43 ID:dGS+DO1u.net]
>>53
ありがとうやってみる!

58 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 16:46:14.60 ID:C/hfrb5c.net]
>>54
経験者はランクDの問題やらない人多いと思う

59 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 16:54:05.51 ID:edLePn8r.net]
https://paiza.jp/learning/sort-number
これか・・・ならprint(list)を代えて
なんかいい感じにforでまわしたりして出力すれば期待通りの出力が得られるんじゃね

60 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 16:58:11.94 ID:edLePn8r.net]
つかよく見たら最初に数字の個数与えられるやんけ・・・草はえたわ



61 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 18:08:13.64 ID:E9wFZVCw.net]
問題文を正しく理解する能力
相手に物事を正しく伝える能力

が、小学生レベルなんですかね

62 名前:デフォルトの名無しさん [2016/10/14(金) 18:08:23.53 ID:dGS+DO1u.net]
>>60
ん?どういうこと??

63 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 18:09:30.60 ID:E9wFZVCw.net]
できました
2分弱

64 名前:デフォルトの名無しさん [2016/10/14(金) 18:14:03.15 ID:dGS+DO1u.net]
だから「超」初心者だって言っとるだろが!!頭大丈夫ですか?

65 名前:デフォルトの名無しさん [2016/10/14(金) 18:14:36.79 ID:dGS+DO1u.net]
>>59
そう!それ!

66 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 18:15:28.67 ID:E9wFZVCw.net]
プログラミング初心者なのは理解してるけど
人間初心者だとは思ってないもの…

67 名前:デフォルトの名無しさん [2016/10/14(金) 18:17:18.59 ID:dGS+DO1u.net]
>>66
意味不明、茶化すならプロ通しで茶化せよ!素人を茶化してもなんにもならんぞ?

68 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 18:18:42.66 ID:E9wFZVCw.net]
悪いけどわたしアマチュアよ
まだ学生ですし

69 名前:デフォルトの名無しさん [2016/10/14(金) 18:26:24.45 ID:dGS+DO1u.net]
ぜんぜん出来ねえしwww

70 名前:デフォルトの名無しさん [2016/10/14(金) 18:27:17.22 ID:dGS+DO1u.net]
ここはなんちゃってプログラマの集まりなのか?w



71 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 18:58:38.57 ID:xYyPUYu/.net]
>>26
p次元変数を一次元でp個の変数と考える

72 名前:デフォルトの名無しさん [2016/10/14(金) 19:58:16.29 ID:qwZLXobz.net]
人生初心者かな?

73 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 20:51:25.62 ID:PbeqszzR.net]
>>70
N=int(input())
num=[int(input()) for x in range(N)]
num.sort
[print(x) for x in num]

74 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 21:29:42.87 ID:B01WZYmm.net]
print("こんにちは")
ソースコードにこんにちはって書かずにこんにちはって出力する方法を教えてください

75 名前:デフォルトの名無しさん [2016/10/14(金) 21:42:04.79 ID:edLePn8r.net]
>>74
ソースコードに書きたくないならそれこそinputで文字列としてこんにちはをうってもらうか
テキストにこんにちはって書いておいてそれをファイルで読み込んで出力するか

76 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 22:07:38.85 ID:lmebjM9j.net]
ソースコードに書けないならソースファイルをこんにちは.pyにして取得すればいいじゃん

77 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 22:24:13.40 ID:7CIQwa03.net]
Unicodeのコードページで書くとか

78 名前:デフォルトの名無しさん [2016/10/14(金) 23:38:03.37 ID:tH2wG9L7.net]
文字列内の空白文字を削除するにはどうすればいいのでしょうか
アンダーバーが空白文字
_A___B__C_
strip()すると前後の文字は消える
A___B__C
したいのは
ABC
のようにしたいのですが

79 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 23:48:55.37 ID:Da3Cuw9U.net]
''.join(item for item in string if item != '_')
ってやればできるけどもっとうまいやり方ある気がするな

80 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 23:58:14.49 ID:Da3Cuw9U.net]
''.join(string.split())
こっちの方がいいか



81 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 00:10:50.61 ID:xu+P59Vi.net]
str.replace(

82 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 00:11:33.26 ID:xu+P59Vi.net]
srt.replace(' ', '')

83 名前:デフォルトの名無しさん [2016/10/15(土) 05:16:57.41 ID:WsUkBpqj.net]
lambdaって可読性悪くならないか?
書籍参考にすると再帰処理の時には lanmda 使ってることが
多いみたいだけど、引数がゴチャゴチャしてると理解しにくい
からlanmba 苦手だわ

84 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 06:30:12.19 ID:CoOvRM84.net]
再帰にlambda使うって不動点コンビネータ?

85 名前:デフォルトの名無しさん [2016/10/15(土) 09:47:04.64 ID:D5oKF7li.net]
Pythonのラムダは糖衣構文もないし普通に使いにくい

86 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 10:26:10.80 ID:6JwhLG8o.net]
python学習の大きな山場がこのランバダだなら

87 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 12:34:58.15 ID:E+cYT6dS.net]
ラムダなしじゃてどうやって書くの?普通にその場でdefでかけってこと?

88 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 13:05:46.28 ID:+PxnxnnH.net]
ラムダ俺も嫌いだ。読みにくいと思う。
kotlinとかほかの言語見るとラムダが今時の書き方なのかもしれんけど。

89 名前:78 mailto:sage [2016/10/15(土) 13:19:42.22 ID:2HxqnLhy.net]
>>79,80
空白文字で分解して再度結合するんですね

>>82
空白ではないので正規表現の\sで置換する方法でもできました。

ありがとうございました。

90 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 13:22:27.76 ID:5kX/FrWC.net]
>>83
理解しにくいとは思わないが
lambda 中に文を書けないのは辛い



91 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 13:23:42.06 ID:5kX/FrWC.net]
>>86
それはない
ジェネレーターとか
凸れーたーの方が山

92 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 16:30:07.55 ID:bzE+ASVR.net]
unittestモジュールを使ったテストでパスしたテストを表示することはできますか?
またunittestの結果をコマンドラインでパイプして加工する方あれば法教えて下さい

93 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 17:53:52.00 ID:CoOvRM84.net]
>>92
-vオプションを付ける、discoverでテストを探す場合はdiscoverより後ろに付ける
$ python3 test_case.py -v
$ python3 -m unittest -v test_case
$ python3 -m unittest discover -v test_case_dir

結果に対してなんらかの加工をしたいときはstdoutにリダイレクトしてパイプにつなぐ
$ python3 test_case.py -v 2>&1 | grep -F "... ok"

94 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 18:39:23.02 ID:bzE+ASVR.net]
>>93
ありがとうございます 
-v オプションですか 全部の結果が出ました
"2>&1 ∣ "というオプションは標準エラー出力と標準出力の両方を合わせてパイプするということですね

95 名前:デフォルトの名無しさん [2016/10/15(土) 19:57:37.39 ID:rbY41A5I.net]
>>83
可読性悪くならない範囲で使う。
可読性が心配なら普通にその場で名前付けて関数定義するから。

96 名前:デフォルトの名無しさん mailto:sage [2016/10/16(日) 22:30:17.94 ID:ZVqg5jNk.net]
a = re.search(r"\d(\d)", 42A3B4C))
a.group()が42になるんですが2でないのはなぜですか?

97 名前:デフォルトの名無しさん mailto:sage [2016/10/16(日) 22:44:15.34 ID:2HJFaHa2.net]
group(1)にすれば"2"が得られるよ
group()はマッチ全体を示す。キャプチヤではない

98 名前:デフォルトの名無しさん mailto:sage [2016/10/16(日) 23:40:23.77 ID:ZVqg5jNk.net]
>>97
ありがとうございます
できました

99 名前:デフォルトの名無しさん [2016/10/18(火) 11:56:29.48 ID:BJnXTcic.net]
超初心者スレということで質問させてもらいます。
初心者以前にこれからpython触ろうと思っているのですが、pythonではversion3はあまり評価が良くないみたいな記事をよく目にします。2.xを使うべきでしょうか?大きな違いはなんでしょうか?
またこれからpython学習するにあたってオススメの入門書を教えていただけますか?

100 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 12:38:49.33 ID:f+/JDd8Q.net]
今からやるのに2系とか狂気の沙汰



101 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 12:40:11.99 ID:EPF+VHJ5.net]
python2は2020までしかサポートされない

102 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 12:59:41.46 ID:xuoB+sig.net]
ごく当たり前のレベルの頭なら、python3が使えるようになれば、python2も使える

まれに頭の記憶容量が1ビットしかない奴らがいて、そいつらはpython2かpython3しか記憶できないので、python2を選ぶのだ

103 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 13:51:03.23 ID:WzTldbdw.net]
↑ドヤ顔で気の利いた事言ったつもり

104 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 14:28:46.58 ID:5DWUgM+U.net]
python初心者未満です
pythonで書かれたプログラムをHTTP上で動かしたいとき、どうするのが普通でどんな手があるんでしょうか

mod_pythonで.py自体を動かす?
#!/path/to/python って書いてcgiとしてに動かす?
cherrypyでサーバとして動かす(

105 名前:ト起動時とかどうするんだろう)? []
[ここ壊れてます]

106 名前:デフォルトの名無しさん [2016/10/18(火) 16:26:26.85 ID:q3gbqcrC.net]
brython

107 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 17:21:10.85 ID:Rangr8w1.net]
プロトコルとは何かね?

108 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 19:19:24.18 ID:mt4PA0vh.net]
dict = {"data_a": {"data_1": "100", "data_2": "200"}, "data_b": {"data_1": "101", "data_2": "201"}}
こういうのからdata_aのdata_1の値を直接取り出すにはどういう風に書いてやればいいんでしょうか?

109 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 19:25:37.97 ID:4aavEEUm.net]
dict['data_a']['data_1']
でいいでしょ

110 名前:デフォルトの名無しさん [2016/10/18(火) 19:38:08.25 ID:Za/J1KU+.net]
やばい、変数名についてめっちゃ問い詰めたい



111 名前:デフォルトの名無しさん [2016/10/18(火) 19:40:46.00 ID:4Ny7N2e6.net]
変数名とかあまりこだわらん方がいいぞ

112 名前:デフォルトの名無しさん [2016/10/18(火) 20:03:39.39 ID:Za/J1KU+.net]
>>104
mod_pythonはもう死んでるから今使うならmod_wsgi

113 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 20:09:11.41 ID:cpqSuFd9.net]
998 名前:デフォルトの名無しさん[] 投稿日:2016/10/14(金) 12:15:05.58 ID:dGS+DO1u [1/2]
小さい数字の順に出力する方法を教えて下さい

999 名前:デフォルトの名無しさん[sage] 投稿日:2016/10/14(金) 12:17:19.08 ID:edLePn8r
>>998
sort使えばいいのでは・・・

1000 名前:デフォルトの名無しさん[] 投稿日:2016/10/14(金) 12:32:25.40 ID:dGS+DO1u [2/2]
>>999
できませんでした


くっすれpython超初スレでも歴代屈指の無能
情けない

114 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 20:13:03.25 ID:cpqSuFd9.net]
こんなのが1000って・・・ええんかお前ら…

115 名前:デフォルトの名無しさん [2016/10/18(火) 20:20:28.85 ID:Za/J1KU+.net]
むしろ回答者さんサイドを問題視していくぐらいの気概でいこう

116 名前:デフォルトの名無しさん [2016/10/18(火) 21:54:16.57 ID:g+sGVD/r.net]
>>99です
有難うございます

117 名前:デフォルトの名無しさん mailto:sage [2016/10/18(火) 21:56:24.76 ID:cpqSuFd9.net]
いいってことよ

118 名前:デフォルトの名無しさん mailto:sage [2016/10/19(水) 00:09:12.49 ID:OiCCOICb.net]
>>99
みんなのPython 第3版、が定番

>>104
Django などのフレームワークを使う

119 名前:デフォルトの名無しさん [2016/10/19(水) 00:52:59.82 ID:+cZk708z.net]
メソッド名とかで、アルファベットは同じ単語なんだけど、
大文字小文字とか微妙に違ってたり キャメルケースと
スネークケースの違いが当たり、クォートがダブルとシングル
が違っていたり、自分の知っているメソッド名指定と書籍の書き方
が微妙に違っていたりする時書籍に合わせようか自分のスタイル
で統一しようかすごく迷う。
一例で言うと、メソッド名じゃないけど utf-8 と UTF-8 みたいな。

こういうメソッド名のシノニム衝突っていうのかな、ってどんな
書き方でもある程度同じものが呼べるように複数パターン定義されて
たりするのかな?

120 名前:デフォルトの名無しさん mailto:sage [2016/10/19(水) 01:22:08.79 ID:mVlV6pyO.net]
>>104
これなんかどうだろう?

『nginx + uWSGI + Python3 + bottle でHello Worldまで』

ttp://inari.hatenablog.com/entry/2016/03/30/232032



121 名前:デフォルトの名無しさん mailto:sage [2016/10/19(水) 01:31:07.07 ID:KohW50nB.net]
>>118
コーディングスタイルはPEP 8に従うのがPythonでの作法
従ってないコードは、他の言語由来、Pythonに習熟してない人が書いた、無精者が書いた、のどれか

122 名前:デフォルトの名無しさん [2016/10/19(水) 19:59:17.74 ID:pj/FZGk/.net]
>>117
>>99です。有難うございます

123 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 00:06:12.30 ID:XgNi879y.net]
pypyって何て読むんですか?

私女子高生なんですけど、人前でパイパ・・・ってゆうのはちょっと困ってしまいます。

124 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 00:07:37.62 ID:wwitTU76.net]
パイパイはパイパイだからパイパイって言えばいい

125 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 00:09:05.93 ID:uOjaASwy.net]
おっさん、暇なら寝ろ

126 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 01:30:39.23 ID:zjT8WczX.net]
python入門者ですらないのですが、パソコンなんって全く知らないって人がプログラミングやろうと思ったら、プログラミングの前にパソコンの基礎知識についてこのサイト、本読んどけとか、タイピングの速さは最低でもこのくらいはあった方がいいとかはありますか?

127 名前:デフォルトの名無しさん [2016/10/20(木) 01:59:43.25 ID:9AXeF6rN.net]
タイピングはまあまあ打てればいいと思う
近くにメンターとなる人がいるならPCの基礎知識はそこそこでいいと思うけど
独学で全部学ぶなら基本情報をやっておくと学習速度が速いかも

128 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 03:44:08.20 ID:YICbRhTq.net]
プログラミング初心者がpygame使いつつpython学ぼうっていうのは無謀過ぎますかね?
大人しく参考書読むべきだと思うのですがどうもモチベーションが上がらなくて...
ゲームといわゆる役立つプログラミングは別ですかね

pip installで.whl入れれなくてpython3系で起動しないからわざわざpython2.7使ってる無能なんですけど

129 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 04:55:49.72 ID:dynDsHp/.net]
Pygameよりも、Godotをやれば?

Godot(ゴドー) Engineではじめるゲーム制作、天沢(あまさわ)らせん、2015

OSS・MITライセンスで、マルチプラットフォーム(iOS/Android/HTML5)、
Python風のGDScriptで書く

2D/3D用だが2D中心で、物理シミュレーションも搭載。
インストール不要で、サイズは20MB

130 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 06:46:18.10 ID:lYRbQ9nh.net]
>>128
調べたらgodot良さそうですね
ありがとうございます

ゲームからざっくり学んでも特に問題無いという認識でいいですかね
頑張ります



131 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 06:55:14.34 ID:XgNi879y.net]
ネトゲで煽り合いしてりゃタイピングなんて身につくよ

132 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 10:27:15.36 ID:AGLlxPxG.net]
たいてい1ヶ月もあれば挫折するから気にせず始めて大丈夫

133 名前:デフォルトの名無しさん [2016/10/20(木) 14:43:07.02 ID:eJoj7htq.net]
>>127
>ゲームといわゆる役立つプログラミングは別ですかね

ゲームにはあらゆる技術要素が含まれてる
ゲームプログラマでビジネスアプリを書けないひとはいないが
ビジネスアプリプログラマ(ペチパー等)でゲーム作れないひとは多い

134 名前:デフォルトの名無しさん [2016/10/20(木) 16:27:14.08 ID:zjT8WczX.net]
>>126
ありがとうございます

135 名前:デフォルトの名無しさん [2016/10/20(木) 16:41:30.54 ID:gC4Rm/yo.net]
>>73
ブブーダメ

136 名前:デフォルトの名無しさん [2016/10/20(木) 16:42:54.87 ID:gC4Rm/yo.net]
>>112
できないんだろ?w

137 名前:デフォルトの名無しさん [2016/10/20(木) 16:44:00.50 ID:gC4Rm/yo.net]
なんちゃってプログラマーの集まりだからなw

138 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 16:49:27.35 ID:hnTitGis.net]
かまってちゃんなのかな?
なんか可愛く見えてきた

139 名前:デフォルトの名無しさん [2016/10/20(木) 17:42:20.86 ID:jYhTTWFa.net]
>>73
num.sort を num.sort() に修正
iPhone の Pythonista 3 で確認

140 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 17:44:42.46 ID:jYhTTWFa.net]
あ、さげ忘れた。。。ゴメン



141 名前:デフォルトの名無しさん [2016/10/20(木) 22:19:29.16 ID:OxU8SSxE.net]
>>139
さげんなカス

142 名前:デフォルトの名無しさん mailto:sage [2016/10/20(木) 23:54:44.88 ID:jgR1Ualu.net]
>>125
uxmilk.jp/46167

143 名前:デフォルトの名無しさん [2016/10/21(金) 09:37:33.32 ID:cYzE9Q4S.net]
>>110
dictとかfileはやめた方が良いね

144 名前:デフォルトの名無しさん [2016/10/21(金) 11:45:48.55 ID:befNjxuN.net]
Pythonで不変なデータ型を作るにはどうすれば良いですか?

145 名前:デフォルトの名無しさん mailto:sage [2016/10/21(金) 12:05:56.55 ID:nZioU6Ll.net]
次のクラスを使う、ただしフィールドは不変な値(int, str, tupleなど)のみで構成すること
collections.namedtuple (<= 3.4)
typing.NamedTuple (>= 3.5)

146 名前:デフォルトの名無しさん mailto:sage [2016/10/21(金) 12:13:35.87 ID:nZioU6Ll.net]
注意としてはフィールドへの再代入は防げても変数自体への再代入は防げない
これはPythonのほかのオブジェクトでも同じ

147 名前:デフォルトの名無しさん [2016/10/21(金) 15:15:54.62 ID:befNjxuN.net]
NamedTupleは文字列で名前をつけないといけないのは面倒だしメソッドもつけ辛いしで取り回しが悪い印象があるのですが、使用者の方は満足な使い勝手を感じているのでしょうか?

148 名前:デフォルトの名無しさん mailto:sage [2016/10/21(金) 16:15:11.73 ID:nZioU6Ll.net]
ああ、データ型と書かれていたので操作が伴わないレコードをイメージしてnamedtupleを挙げた
不変のクラスを作るといっても下の4点を守りつつclass文で定義するだけだよ

フィールドは名前の先頭にアンダースコアを付けて触るなアピールする
外から参照したいフィールドがあるときはpropertyを使ってget操作のみ定義する
__init__()以外のメソッドではフィールドを絶対に書き換えない
フィールドを変更したいときは新しい値でオブジェクトを生成してreturnで返す

149 名前:デフォルトの名無しさん [2016/10/21(金) 16:36:46.73 ID:UZUqTl2h.net]
@property
def spam(self):
____return self.spam

をフィールドの数だけ書くのはやむなしか……

150 名前:デフォルトの名無しさん mailto:sage [2016/10/21(金) 16:44:30.79 ID:nZioU6Ll.net]
propertyのそれをやってくれるのがnamedtupleなんだけどね
>>147で失念してたけど後からフィールド付け足しできないように__slots__を指定する必要もあった



151 名前:デフォルトの名無しさん [2016/10/21(金) 17:43:51.40 ID:KvD6T+Uq.net]
>>148
@definegetters
class Hoge(object):
def __init__(self):
self._attr1 = value1

こうすると
Hoge.attr1 で self._attr1 を返す getter を attr1-attrN まで作ってくれるとうれしい

152 名前:デフォルトの名無しさん mailto:sage [2016/10/22(土) 02:03:21.78 ID:aXDdLfrs.net]
>>150
pastebin.com/RNrnFGdJ
思いつきだけどこんな感じ、クラスのアノテーション全部拾うので他の用途と組み合わせ難しいかも






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef