トップページ⇒tech
1001コメント265KB

Pythonのお勉強 Part14

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/20(金) 00:34:56
日本 Python ユーザ会
http://www.python.jp/Zope/
Python オフィシャルサイト
http://www.python.org/
Python 2.5
http://www.python.org/download/releases/2.5/
IronPython
http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
まとめ wiki
http://www7a.biglobe.ne.jp/~yasozumi/python/wiki/
Pythonの入門書「みんなの Python」
http://www.amazon.co.jp/gp/product/479733665X/

Pythonのお勉強 Part13
http://pc8.2ch.net/test/read.cgi/tech/1157984472/
0232デフォルトの名無しさん2006/10/25(水) 01:41:23
>230
そんなあなたにとっておきの解。

つ [C++]
オールドスタイルキャストしちゃえばどんなポインタも望み通りのクラスインスタンスになれるよ!!
                     ハ_ハ  
                   ('(゚∀゚∩ でもしぬるよ!!
                    ヽ  〈 
                     ヽヽ_)
0233デフォルトの名無しさん2006/10/25(水) 01:47:36
230が言ってるのがどういうタイプの横着のことなのか分からん・・・
まさかそんな基礎設計的な部分で「タイプがめんどくさい」とか・・・・?w
0234デフォルトの名無しさん2006/10/25(水) 01:55:53
「俺ってすごい感」とか
そういうやつだと想像。
02352272006/10/25(水) 02:04:19
読み違えてた。正直すまんかった。

こういうことだったのね。

a = ReturnsA()
a.__class__ = B

0236デフォルトの名無しさん2006/10/25(水) 05:02:26
>>230
>要するに、インターフェースを換えずに振る舞いを換えたり
>新たなインターフェースを追加したいと言うことです。
いくらなんでも矛盾してるだろ。いいたいことはわかるが。
つうか、こんなことができる言語ってなかなかないような気がする。
プロトタイプ指向でもない限り。

>>235
Pythonすげえ!
0237デフォルトの名無しさん2006/10/25(水) 08:08:53
委譲ということばがでたところで質問。

Python を使ってデザインパターンの説明してるページとかないですか?
0238デフォルトの名無しさん2006/10/25(水) 08:18:26
>>235
pythonスゲェが、これは・・・・
0239デフォルトの名無しさん2006/10/25(水) 09:00:47
おまえら賢いな。俺には>>224の言いたいこととやりたいことがサッパリ理解できないわけだが
0240デフォルトの名無しさん2006/10/25(水) 09:42:11
ここはエスパー養成スレですから
0241デフォルトの名無しさん2006/10/25(水) 10:44:50
>>224
Adapterのことだよな?
ttp://www.python.org/dev/peps/pep-0246/
ttp://qwik.jp/zope3study/58.html
02422272006/10/25(水) 10:50:38
エスパーでも何でもない。釣られただけ。

要は、「(動的なクラス変更ができない言語のために発明された)
アスペクトとかデコレータとかをPythonでやるにはどうすればいいの?」
という質問なんでしょ。

動的なクラス変更ができるPythonなら、235で書いた(書かされた)通り、
「動的にクラスを変更すればできますよ」という答えが出てくるのは必定。

そこで>>236、>>235のような「それは反則じゃないのか」という反応が起きるのも予定調和。

そして、この流れ自体が、>>231が喝破したように、
>>224が仕掛けたメタクラス誘導のための釣り。

これに釣られて、227で墓穴を掘り、235でネタを提供させられ、
ついにはこの解説を書かされる羽目になったのが俺。
0243242(=227)2006/10/25(水) 10:56:39
すまん。

そこで>>236、>>235のような

は、

そこで>>236、>>238のような

の間違い。
何あわててるんだ。俺。
0244デフォルトの名無しさん2006/10/25(水) 11:02:44
暇人の集うスレへようこそ。
0245デフォルトの名無しさん2006/10/25(水) 11:26:42
227を釣るスレになりました。
0246デフォルトの名無しさん2006/10/25(水) 13:00:33
>>227
正直、感動した。
まとまらない質問に、見事なまとめで答える。
Q&Aの見本のようなやり取りだと思った。
0247デフォルトの名無しさん2006/10/25(水) 13:12:02
初心者ばかりのスレで孤立する 241
0248デフォルトの名無しさん2006/10/25(水) 13:59:48
変数が定義されてるかどうか調べるのに、

if not '__host' in dir(self)

とかやってる私は変ですかね。

0249デフォルトの名無しさん2006/10/25(水) 14:02:33
>>248
>dir(self)
hasattr(self, '__host')
0250デフォルトの名無しさん2006/10/25(水) 14:02:37
変じゃないよ。
みんな隠しているけど、ここはそんな人たちばかりだから。
0251デフォルトの名無しさん2006/10/25(水) 14:22:37
>>249
なるほど。

本当にこういう方法しかないんですか

>>250
?

0252デフォルトの名無しさん2006/10/25(水) 15:11:39
vars(self).has_key('__host')
0253デフォルトの名無しさん2006/10/25(水) 15:14:30
has_key() は西暦 3000 年に消滅するので
なるべく使わないようにしたほうがいい
0254デフォルトの名無しさん2006/10/25(水) 16:01:48
うちの鬼が笑っています。
0255デフォルトの名無しさん2006/10/25(水) 16:08:04
dispatchモジュールについて知りたいのですが、
検索してもドキュメントの類を見つけることができませんでした。
唯一見つけた情報が下のDWの記事くらいで。
http://www-128.ibm.com/developerworks/library/l-cppeak2/

dispatchモジュールの使い方を学ぶにはどこを参照すれば
いいのでしょうか?
0256Python初心者2006/10/25(水) 16:23:07
空気を読まないPython初心者として一言:
Pythonのオブジェクト指向は他の言語とは
かなり違いますよね。
class PythonJoke :

  X = 'Python'
  if X=='Ruby':
    print 'Yadaa! Ruby'
  else:
    print 'OK! Python'
  
PythonJoke()

PythonJoke->OP:
OK! Python

クラスが普通の関数と同じように使える…

>>199
クラスの定義文の外でクラス自体も、それから
生成したインスタンスも自由に変更出来る。

確かにパワフルな印象はあるが、これはこれで
使いこなすのは結構難しいような気がする。
特に多人数で開発するとき。
いちいちdir()で中味を確認しないとクラスや
インスタンスが使えない…、なんてことには
ならないのだろうか?
0257デフォルトの名無しさん2006/10/25(水) 16:23:09
>>254
お宅の鬼によろしく言っておいてください。
0258デフォルトの名無しさん2006/10/25(水) 16:38:44
>>255
そんなことをここで訊くのが間違っている。
こんなところに出入りしている暇があったら素直にソース嫁。
02592552006/10/25(水) 16:41:25
>>258
ソースがある場所だけでも教えていただけると助かります。
0260デフォルトの名無しさん2006/10/25(水) 16:47:49
>>259
おまいの貼り付けた記事に書いてあるだろうがー
0261デフォルトの名無しさん2006/10/25(水) 16:51:35
>>255
一応関連記事
ttp://www-06.ibm.com/jp/developerworks/linux/030606/j_l-pydisp.html
いいか、もうこんなとこに来るんじゃないぞー
0262デフォルトの名無しさん2006/10/25(水) 16:52:09
256 が仲間になりたそうにこちらを見ています
0263デフォルトの名無しさん2006/10/25(水) 17:42:50
ソフトウェアデザインの2.5解説は On Python を読みましたと言わんばかりだったなぁ。

0264デフォルトの名無しさん2006/10/25(水) 17:44:55
>>263
On Pythonって何?
おっぱいそんしか知らないぜ。
0265デフォルトの名無しさん2006/10/25(水) 17:58:28
>>264
雑誌原稿が書きたくて悔しいご本人だよ。
そっとしておいてやれ(ww
0266デフォルトの名無しさん2006/10/25(水) 18:27:16
>>265
うはwwwwwwwww
とんだ馬鹿面引っこ抜いちまった。

サイト管理者の方、すみませんでした。
0267デフォルトの名無しさん2006/10/25(水) 18:32:46
>>263
どっちも python.org の英文を元にした二次情報だろ.
悔しいのかも知れないが、こういうときは黙っておくのが男というものだよ.
0268デフォルトの名無しさん2006/10/25(水) 18:59:53
新着47件ですか
0269デフォルトの名無しさん2006/10/25(水) 19:05:51
あの、forでまわして配列に値を順繰りに詰め込んで逝くという動作についてなんだけど
ネットを駆使して調べて

n=[1,2,3,4,5,6,7,8,9,10]
sum = [0]

for r in n:
sum = sum + r
print "sum[", r, "] =", sum[r]

みたいにしたのですが、このやりかたはPython的にはスマートではなかったりするんでしょうか?
0270デフォルトの名無しさん2006/10/25(水) 19:14:29
リストの内包表記かな。
あと、print文も
print "sum[%d] =%d" % (r, sum[r])
みたいにするのがいいと思う。
0271デフォルトの名無しさん2006/10/25(水) 19:15:04
>>269
ネットで何を調べたのかは知らないでげすが、組み込み関数のreduceを使って
>>> reduce(lambda a, b: a + b, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 0)
55
とするのが、関数型言語的にはベタでスマートなやり方ですがPython的には
どっちでもいいでげす。
0272デフォルトの名無しさん2006/10/25(水) 19:30:06
>>270
>>271
アドバイスありがとうございますですm(..)m
0273デフォルトの名無しさん2006/10/25(水) 19:32:26
>>263

http://www.shido.info/py/

「おっぱいそん」ってこれか?
ググッてはじめて見たぞ。
こんな些末なサイトを引き合いに出す理由が分からん。
やっぱり本人だろ?
辺境のサイトにアンチがいるとも思えんしな。
0274デフォルトの名無しさん2006/10/25(水) 20:27:59
組み込み関数sum()を知らないスマートな初心者の集まるスレはここですか?
0275デフォルトの名無しさん2006/10/25(水) 20:48:58
269がめちゃくちゃに見えるんだけど・・・?
0276デフォルトの名無しさん2006/10/25(水) 20:51:08
嫌なことや気になることでもあったに違いない
0277デフォルトの名無しさん2006/10/25(水) 20:52:51
めちゃくちゃでもいいんだよ。
lambdaやreduceやメタクラスさえ使えれば満足なんだから。
0278デフォルトの名無しさん2006/10/25(水) 20:57:02
lamda や reduce , メタクラスを不用意に使いたがる人たちを
「おっぱいそん」と呼んで蔑むことにしましょう
0279デフォルトの名無しさん2006/10/25(水) 21:09:37
>>269
コレ動くの?
0280デフォルトの名無しさん2006/10/25(水) 21:30:36
testしてないコード書き込む奴はバカ
0281デフォルトの名無しさん2006/10/25(水) 21:31:56
エスパー能力で補完すると
sum[r] = sum[r-1] + r
としたいのかな
0282デフォルトの名無しさん2006/10/25(水) 21:32:33
スレを流したい理由でもあったんだろ。
0283デフォルトの名無しさん2006/10/25(水) 21:57:04
最近、Pythonに興味を持ったんだけどPythonスレっていつもこういう流れなのか?
つーか、ここって本当にPythonの本スレなのか?
0284デフォルトの名無しさん2006/10/25(水) 22:03:21
スレ番二桁過ぎた辺りから特に、住民が陰険になってこんな感じ。
慣れればどうってことないんで、本スレと認識してOK
0285デフォルトの名無しさん2006/10/25(水) 22:06:30
さて、そろそろメタ(ry
0286デフォルトの名無しさん2006/10/25(水) 22:18:52
>>273
いちいちURLさらすお前が本人だろ?
02872832006/10/25(水) 22:20:01
海外はともかく日本国内で代表的なフォーラムがあるようにも見えないし、
MLやmixiのコミュも閑古鳥が鳴いてる。
Perlの次に人気がある(はずの)スクリプト言語のユーザー達は、一体どこで
情報交換してるのか不思議で仕方ない。
0288デフォルトの名無しさん2006/10/25(水) 22:26:13
とりあえずどんな言語だろうと、mixiに期待するのは止めとけ。
多少荒れたとしても、この板の方がはるかにマシだ。
0289デフォルトの名無しさん2006/10/25(水) 22:33:13
n=[1,2,3,4,5,6,7,8,9,10]
sum = [0]

for r in n:
sum = sum + [r]
print "sum[", r, "] =", sum[r]

でした。
0290デフォルトの名無しさん2006/10/25(水) 22:53:00
そいやこんな本も出ていましたが立ち読みしたとかでもいいので内容おしえれ。
http://www.cbook24.com/bm_detail.asp?sku=4839921709
0291デフォルトの名無しさん2006/10/25(水) 23:06:43
>>290
Pythonの解説があまりにも中途半端だと思った.
この著者本当にPython知ってんのかレベルの中途半端さ.
0292デフォルトの名無しさん2006/10/25(水) 23:14:32
初心者の集まるスレはここですか?って、そりゃないだろう。何それ?

もうレスは完結してるのに自分で勝手にやったんだろう?
教えてもらった君が言うのもなんだが、ちょっと暴走してるんじゃないか。

組み込み関数sum()のことも、展開した形に直されて実行されると知っているから、
"展開したらどういう構造になるのか?"と聞いたわけ。
そうしたら、"速度を気にするのなら使うべきではない。が、どうしても構造が気になるならファイル出力して見ろ"と
返答をいただいた。
これはつまり、組み込み関数sum()は遅い、少なくとも組み込み関数sum()を使うことで手打ちよりも速く最適化されるわけではないって言ってるんじゃないの?
これは、組み込み関数sum()が実行速度を落とす(結果論)以外の何にあたるの?
一体誰が、組み込み関数sum()で実行速度が遅くなる"理屈"を聞いたんだよ。そこも勝手な勘違いだろう。

組み込み関数sum()を使うと実行速度が遅くなる、 答えは YES  これでいいんだろ? これが結果だろ?
それが>>274の"組み込み関数sum()を知らないスマートな初心者の集まるスレはここですか?"ってことだろ?
何を余計な理屈を言って、それで"初心者の集まるスレはここですか?"ですか?w

初心者の集まるスレはここですか?ってw

お前、どんな内容であろうと、叩くか、人の足元見て博識ぶって偉そうにするかしか能がないだろ。
やらされたくなかったらレス自体しなければいいこと。
レスさえしなければ、俺の質問は流されて終わるか、他の誰かが知識を分けてくれるか、ただそれだけ。

Pythonしか使えないやつというより、俺も含めてこのスレ全体が腐ってるんじゃねーか。
俺と同類だよ同類。俺もこの程度でファビョンするくらいだから低俗なんだろうがな、
お前らも同等な低俗さだよ。同じような人間として言わせてくれよな。否、同じ生き物として認めたがらないんだろうけどな。

まぁ、このレス以降もう来ないから、テキトーに釣られときな。
教えてくれてありがとーな。
0293デフォルトの名無しさん2006/10/25(水) 23:15:50
このスレの住人もあまり人のこと言えませんよね
0294デフォルトの名無しさん2006/10/25(水) 23:19:27
アワワワワワ。
0295デフォルトの名無しさん2006/10/25(水) 23:21:25
ひゃあ、きちがいだ。
0296デフォルトの名無しさん2006/10/25(水) 23:22:24
>>295
答えは YES
0297デフォルトの名無しさん2006/10/25(水) 23:31:40
sumとかstrとかintとかいう変数を定義しちゃダメだぉ。

>>> int = 0
>>> int("123")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: 'int' object is not callable
0298デフォルトの名無しさん2006/10/25(水) 23:45:44
ある程度の規模のツールを作ることになって、文字列処理がメイン
と言うこともあり、Pythonで作って配布する事になった。
しかし、py2exeを試したが、DLL付属でとてもサイズがデカイ。
IronPythonも考えたが、相手方の環境を考え見送った。

結局py2exeで作った実行ファイルを渡したが、「サイズでかい」、とか
「何このDLL」とか、色々言われてしまった。
次に展開する時は、「前のツールと同じ場所に置いて」とでも言えばいいのか。

Pythonで作ったツールとか、社内とかで配布したい場合どうしてる?
0299デフォルトの名無しさん2006/10/26(木) 00:12:41
そうね。ミキシは無いね。
一番いいのは自分で調べることだと思う。
ほぼ全ての情報はWebにまとまってる。
0300デフォルトの名無しさん2006/10/26(木) 00:16:21
>>298
俺は、会社の規模がさほど大きくないこともあって、問答無用で
Python をインストールさせるが...

それより、IronPython を使わせる方がハードル高い気がする。
0301デフォルトの名無しさん2006/10/26(木) 00:21:15
GUIのアレ、うろ覚えだけど.netだっけか。
記事で見たら付属ファイル無いとかなんとか、
夢みたいな良い事ばかり書いてあったな。
03022982006/10/26(木) 00:27:43
>>300
Cygwin環境があれば、強制的に入れさせることも「あり」なんですけどね・・・。
setup.pyにWINDOWSフォルダにPython24.DLLをコピーする処理を書こうかとも
思ったが、後で問題になるかも知れないと思い断念。

早いところVBスクリプトとかJスクリプトとかと同じ扱いになって欲しい<Python
0303デフォルトの名無しさん2006/10/26(木) 01:00:14
(car, *cdr) = [1,2,3,4]
とかできると嬉しいんだけどな…。
0304デフォルトの名無しさん2006/10/26(木) 01:10:26
mixiのPythonコミュは管理人が小物過ぎるんだろ。
あと,MLは時代遅れかもな。
最近の奴はBlog + ソーシャルブックマークとかで情報収集してるんじゃね?
0305デフォルトの名無しさん2006/10/26(木) 01:21:02
>>302
1つのexeファイルにパッキング
圧縮すれば小さくなるし
0306デフォルトの名無しさん2006/10/26(木) 01:37:02
>289
それ動く?

なんで リスト が必要ではない(と思われる)ところで
[]を書こうとするのか?
0307デフォルトの名無しさん2006/10/26(木) 02:14:22
>>289
sum = sum + [r] よりも sum.append(r) の方が効率的で速いよ。

>>303
car, cdr = x[0], x[1:] と書くのと大差ないよーな。
0308デフォルトの名無しさん2006/10/26(木) 02:38:21
>>298
> Pythonで作ったツールとか、社内とかで配布したい場合どうしてる?

実際にそういう状況になったことはないけど、もしやるとしたら
1.作ったアプリの方は Python で言うところの「パッケージ」にして(ディレクトリ毎に __init__.py を書いて)
setup.py を書いて Windows 用インストーラを生成して配布。
2.Windows 版 Python も Python.org が配布している Windows 用インストーラを推奨。
3.アプリの実行は
a)DOS 窓でパッケージ内の foo.py を実行してもらう(拡張子は .py のままにする)
b)Python 2.5 を使うことにして、新設された -m オプションを使ってパッケージ内の foo モジュールを起動。
c)Tkinter で(←ここ重要)簡単な GUI をつける。
といった方法を採用。ショートカットの作成を推奨したり
.bat ファイルを用意するぐらいはやってもバチは当たるまい。

とにかく Windows 用インストーラでサクサク、というのが敷居を下げるコツのような希ガス。
アンインストールも簡単で後腐れがなければなお良い(これもお試しユーザにとっては重要)。
0309デフォルトの名無しさん2006/10/26(木) 03:01:29
バイナリはpy2exeで作って、インストーラはInno Setupで作っているよ。
結果的にファイルがいっぱいあっても、インストーラ一発でインストールできるなら
素人さんは文句言わないような気がする。
0310デフォルトの名無しさん2006/10/26(木) 03:08:41
入れるときに見えるアーカイブが一つなら、中がカオスでも気づかれないしね。
0311デフォルトの名無しさん2006/10/26(木) 07:56:13
>>306
やりかたが分からなかったから
とりあえずやりたいことを実現するために出来ることをやってみたら
この形が一番始めにできたからです

いわばオブジェクト指…思考です!
0312デフォルトの名無しさん2006/10/26(木) 10:11:45
アワワワワワ。
0313デフォルトの名無しさん2006/10/26(木) 12:52:46
Numpy 1.0出たね。
って使ってる人少ない?
0314デフォルトの名無しさん2006/10/26(木) 13:05:59
289はHaskell的なスタイルだなって思った。
0315デフォルトの名無しさん2006/10/26(木) 13:39:09
関数型言語風のスタイルも
オブジェクト指向風のスタイルも
そつなくこなすのがPython的にいけてるスタイル
0316デフォルトの名無しさん2006/10/26(木) 13:55:53
ムネオたんの新作
ttp://www.okisoft.co.jp/esc/python/iron-python-intro.html
0317デフォルトの名無しさん2006/10/26(木) 14:20:03
>>316
「本人乙」とか言われるぞ!!
0318デフォルトの名無しさん2006/10/26(木) 17:31:02
>>313
インスコ完了
0319デフォルトの名無しさん2006/10/26(木) 18:05:42
>>313
scipyスーパーパック対応待ち。
0320Python初心者2006/10/26(木) 20:47:47
>>262
ねぇ、
>>199
とか
>>256
なんかの問題に関して、Python関係の本や雑誌には
一切触れられてないが、ここに集う人々にとっては
全て織り込み済み?

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
…
個人的には、結構
ugly,implicit,complex and complicated
な面白い話題じゃないかと思うが…

例えばC言語スレなんかでは、
>scanfを暴走させるのはスキル不足
>getsを使うのは知識不足
>strtokでハマルのは理解力不足
>よって、馬鹿はscanf, gets, strtokは使わない方が良い。
「堂々と」言語仕様の問題点を指摘していたような
記憶がある。
0321デフォルトの名無しさん2006/10/26(木) 21:34:39
杞憂でしょう
ついうっかり間違えて使うようなバグまがいの仕様ではないし

上級者しか使えない言語は問題だけど
上級者しか使わない言語機能は問題にはならない
0322デフォルトの名無しさん2006/10/26(木) 21:53:32
これだから原理主義者は...。
0323デフォルトの名無しさん2006/10/26(木) 21:56:18
何が問題なの?
0324デフォルトの名無しさん2006/10/26(木) 22:14:18
クラス名に()を付けてコンストラクタを呼び出す構文なら他の言語にもある。
0325デフォルトの名無しさん2006/10/26(木) 22:17:49
>>320
323に同意。それらの言語仕様の何がどう問題なの?
トリッキーなことができるのと、実際にトリッキーなことをやるのとは違う。
トリッキーなことをしなくても Python プログラムは書ける。
Python は法律じゃない。トリッキーな抜け穴があっても誰も困らない。
0326デフォルトの名無しさん2006/10/26(木) 22:27:47
いわゆる「弱い型付け」の言語は実行時とそれ以前(たとえばコンパイル)
の区別がなくて、関数やクラスの定義を実行時に解釈する物が殆ど。
クラス定義が実行時に解釈されるんだから、たとえばメソッドの書き換え
が実行時に出来るかどうかは、その属性が外から変更できるかどうか、の
問題に帰結する。

トリッキーだと思うかどうかは読む人のバックグラウンド次第じゃないか?
lambdaとかクロージャとかの経験があれば、あってよかった、ってなもんかも。

そういう話じゃなくて?
0327デフォルトの名無しさん2006/10/26(木) 22:28:00
>320
言語仕様の問題点?古い時代の標準ライブラリの問題点だろ?
0328デフォルトの名無しさん2006/10/26(木) 22:29:32
釣りが上手ですね。
0329デフォルトの名無しさん2006/10/26(木) 23:07:48
原理主義者だ、原理主義者だ、何の原理か知らねえけど原理主義者だ!
0330デフォルトの名無しさん2006/10/26(木) 23:23:53
perl みたいに一つのこと解決する短い式や文をいろんな書き方で書けるという
特徴を否定的に表現して、英語でなんとかって言うらしいんだけど、なんだっけ?
0331デフォルトの名無しさん2006/10/26(木) 23:28:11
TOOWTDI
There's Only One Way To Do It

かな?違うかも
■ このスレッドは過去ログ倉庫に格納されています