1 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 17:52:57 ] クラスは代入も関数も引数も参照渡しをする
35 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:22:02 ] >>34 あんまそういうuglyなことすんな それと削除依頼出してこい
36 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:36:02 ] >>35 仕様書どおりにしかプログラム書けない底辺野郎はROMってろ
37 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:59:07 ] 仕様書通りに書けるなら立派な底辺じゃないか
38 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:11:21 ] ------[第二部完]------
39 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:27:58 ] ------[再会]------
40 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:10:14 ] ------[第三部完]------
41 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:02:07 ] >>34 これは使える
42 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:54:52 ] オブジェクトはクラスをテンプレートとして生成される。 クラスのテンプレートはメタクラス。 type(obj) はオブジェクトobj の型/クラスを返す。 新しいtype クラスは、関数new.classobj が提供してきたのと同様のクラス・ファクトリーの役割を果たす。 >>> X = type('X',(),{'foo':lambda self:'foo'}) >>> X, X().foo() (<class '__main__.X'>, 'foo') Xはクラスオブジェクト
43 名前:デフォルトの名無しさん [2008/09/09(火) 20:14:44 ] ------[第四章 モンバーバラの姉妹]------
44 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:32:44 ] ラムダについて 式 lambda arguments: expression は関数オブジェクトになる。 そして def name(arguments): return expression と同じ動作をする。
45 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:39:29 ] ------[第四部 モルモンの侵攻とタプルたん]------
46 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:26:37 ] class文を実行するとメタクラスが必ず関わる。 メタクラスは 旧式クラスはtypes.ClassType 新式クラスはtype 自分でtypeをサブクラス化してカスタムメタクラスを作る事も可能。 クラス定義が読み込まれる際、__metaclass__ が定義されていれば、 type() の代わりに __metaclass__ が指している 呼び出し可能オブジェクトが呼び出される。 __metaclass__ この変数は name、bases、および dict を引数として 取るような任意の呼び出し可能オブジェクトにできる。 【メタクラスの決定順】 dict['__metaclass__'] があればそれを使います。 それ以外の場合で、最低でも一つ基底クラスを持っているなら、 基底クラスのメタクラス (__class__ 属性を探し、なければ 基底クラスの型) を使います。 それ以外の場合で、__metaclass__ という名前のグローバル変数 があれば、それをつかいます。 それ以外の場合には、旧形式のメタクラス (types.ClassType) を使います。
47 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:33:39 ] typeはクラス >>> import inspect >>> inspect.isclass(type) True
48 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:43:33 ] Python Code Readingで 今週金曜日のお題になってたところだな
49 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 09:19:56 ] >>48 はあ?俺のオリジナルだカス 消えろ
50 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 09:33:21 ] >>48 >Python Code Reading ttp://coreblog.org/ats/python-code-reading-04 こんな楽しそうなイベントがあったとは。。 けど開催日が金曜の午後7時って一般的にみんなキツイだろww せめて他の平日にしてほしい。あと金払うから過去の内容も公開して欲しいな。
51 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 09:52:34 ] ちょwwwwww主催者に要望メール送ろうと思ったらブログのコメント欄だったwwworz
52 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 10:02:56 ] まるちゃん乙!
53 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:57:02 ] #新らしい形式クラス class X(object): pass class Y(): __metaclass__ = type Z = type("Z",(),{}) #古い形式クラス class H(): pass print type(X) #<type 'type'> print type(Y) #<type 'type'> print type(Z) #<type 'type'> print type(H) #<type 'classobj'> >>46 のメタクラス決定順の通り、クラスオブジェクトHは旧式のメタクラスが使用されている。
54 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 13:35:10 ] #「ok]という属性にだけ代入ができるクラスA #ラッパー関数 def rap(func): def t(self, name, value): if name == "ok": func(self, name, value) else: raise AttributeError("代入できません") return t class A(): class __metaclass__(type): __setattr__ = rap(type.__setattr__)
55 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 13:53:17 ] >>54 こっちの方が解りやすかった class A(): class __metaclass__(type): def __setattr__(self, name, value): if name == "ok": type.__setattr__(self, name, value) else: raise AttributeError("代入できません")
56 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:15:31 ] >>> class A(object): ... __slots__ = ("ok",) ... >>> a = A() >>> a.ok = 0 >>> a.ng = 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'A' object has no attribute 'ng'
57 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:28:54 ] >>56 それインスタンスでしょ
58 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:38:13 ] >class A(): > class __metaclass__(type): その書き方は、Guido が completely unreadable って言ってた
59 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 15:04:29 ] >>58 まじ?class定義の中でまたclass定義してるのがイヤなのかな? となると class B(type): def __setattr__(self, name, value): if name == "ok": type.__setattr__(self, name, value) else: raise AttributeError("代入できません") class A(): __metaclass__ = B って感じなのかな〜?
60 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:17:33 ] あるクラスが __getitem__() という名前のメソッドを定義 しており、 x がこのクラスのインスタンスであるとすると、 x[i] は x.__getitem__(i) と等価になります。 特に注釈の ない限り、適切なメソッドが定義されていない場合にこのような演算を行おうと すると例外が送出されます。 #コンテナをエミュレートする class A(object): def __getitem__(self, key): pass x = A() の場合 x[i]とx.__getitem__(i)は等価
61 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:21:51 ] つかなんでPythonはじめたのさ 回りに使ってる奴皆無だろ。
62 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:24:56 ] ほう
63 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 02:34:47 ] >>61 特別な理由はないよ。Rubyでもよかった。Webアプリとか作れれば。 >回りに使ってる奴皆無だろ。 そもそも周りにプログラマーがいない
64 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 02:35:49 ] だってニートだし
65 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 02:42:28 ] >>61 Rubyよりライブラリがあるんじゃないの?
66 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 11:22:40 ] __contains__()メソッドはインスタンスオブジェクトoにKey kが存在するかのチェックを if k in o と簡単に書けるようにするためのメソッド
67 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 20:16:42 ] コンテナへ反復処理を実装する。 そのためには__iter__()メソッドを定義する。 このメソッドはイテレータオブジェクトを返すようにする。 イテレータオブジェクトはイテレータプロトコルをサポートする必要がある。 __iter__()とnext()の2つのメソッドがイテレータプロトコルを成す。 class A(object): data = "abc" def __iter__(self): return iter(self.data) >>> a = A() >>> for c in a: ... c ... 'a' 'b' 'c'
68 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 20:21:44 ] クラス自体で next() を定義している場合、__iter__() では 単に self を返すようにできる。 class B(object): data = "abc" index = 0 def __iter__(self): print type(self) return self def next(self): print type(self) if self.index == len(self.data): raise StopIteration self.index += 1 return self.data[self.index - 1] selfの中身はインスタンス。 selfという名前は慣習。
69 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:05:46 ] 素の list が結構便利に出来てるから、 そこまで手の込んだクラスがどうしても必要になる場面は そんなに多くないよ。まあ、知ってて損はないけど
70 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:48:23 ] >>69 ありがと。自分も途中で「これ使う時あんのかな?」って思ってた。
71 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:47:07 ] string モジュールを使ったプレースホルダ import string s = string.Template("$who have $what") #キーワード引数を使用する print s.substitute(who='I', what='apple') #I have apple #テンプレートにないKeyはスルーされる print s.substitute(who='I', what='apple', a="abc") #I have apple #辞書オブジェクトが引数の場合 d = dict(who='I', what="apple") print s.substitute(d) #I have apple #locals()を引数にする。 #locals()は値のある変数をキーとした人工的な辞書 msg = string.Template("the square of $number is $square") for number in range(10): square = number * number print msg.substitute(locals())
72 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:17:21 ] これなんとかマーケティングとかいうやつだろ
73 名前:デフォルトの名無しさん [2008/09/12(金) 23:38:57 ] 1はどんな本、もしくはWEBで勉強してるの?
74 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 01:16:08 ] ? 答える義務なんてないと思うが きもい奴がいますね
75 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:10:25 ] >>73 本は Python クックブック 第2版 ttp://www.amazon.co.jp/gp/product/4873112761/ を買ったけど、 Python ドキュメント www.python.jp/doc/release/ を見てる方が多い。
76 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 15:24:36 ] >>73 ごめんURI間違えた Python クックブック 第2版 www.amazon.co.jp/dp/4839922829
77 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 13:41:57 ] マップ型のfromkeysメソッド mapping.fromkeys(seq[, value]) seq からキーを作り、値が value であるような、新しい辞書を作成します >>> d = {"A":1,"B":2} >>> d {'A': 1, 'B': 2} >>> dict.fromkeys([k.lower() for k in d]) {'a': None, 'b': None}
78 名前:デフォルトの名無しさん [2008/09/14(日) 22:51:40 ] >>75 サンクス。 本高いな、オライリーだからかな? >>76 「間違えた」って言ってる割には、リンク先のタイトルと一致してないんだけど・・・
79 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:37:46 ] みんPyとJython本はネタとしてよくリンクが貼られる
80 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:59:05 ] 本人じゃないとしたら、誰かが著者を陥れようとしてるのかなぁ・・・
81 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:21:30 ] ま、たいてい唐突にこういうの出る場合関係者の自演だと思うがな。 だってまったく話題にあがってこないものだったわけだからね
82 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 11:11:01 ] >>78 /\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーたageた | ,;‐=‐ヽ .:::::| \_______ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
83 名前:デフォルトの名無しさん [2008/09/15(月) 21:33:29 ] ここってsage進行なの?
84 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 22:08:28 ] モジュールurllib2でhttpステータスに直接アクセスする。 >>> import urllib2 >>> urllib2.urlopen("www.example.com ").code 200
85 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 17:46:27 ] urllib2でプロキシ&UserAget import urllib2 #ProxyHandlerインスタンスを生成 proxies = urllib2.ProxyHandler({"http" : "host:port "}) #OpenerDirectorインスタンスを生成 opener = urllib2.build_opener(proxies) #UserAgetを変更 opener.addheaders = [("User-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)")] #インストール urllib2.install_opener(opener) #出力 print urllib2.urlopen(url).read() #print opener.open(url).read()でも一緒、その場合openerのインストールは不要
86 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:35:11 ] 例外のelse文は例外が送出されなかった場合に実行される。 except 節は例外名の後に変数が指定可能。 try: print i except ZeroDivisionError, e: print "例外ZeroDivisionErrorです。:", e except NameError: print "例外NameErrorです。" else: print "else文です。"
87 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:45:39 ] ユーザ定義の例外はException クラスから導出して、新しい例外クラスを作成する class MyError(Exception): ・・・
88 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:56:22 ] tryって、例外を自分で処理するために使うんだよね? try文で囲ってない部分で例外が発生したら、そのプログラムが強制終了すると。
89 名前:デフォルトの名無しさん [2008/10/13(月) 10:04:44 ] 勉強してるうちに勉強そのものが目的になって もともと何が作りたかったのか忘れてることってない?
90 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 15:23:40 ] >>89 HaskellやらLispやらの勉強は特にそうだよなwww 奴らじゃなきゃ出来ない事なんてないわけだし、むしろ一般的なライブラリやドキュメントが少くて不便なことも多い。 例えばGUIとか。
91 名前:sage [2008/10/13(月) 16:46:23 ] >>89 あるある。 もともと作りたいものが具体的にないんだけどね。 勉強している時は、これであんなことやこんな事が出来そうと思ってワクワクする。 でも気づいたら完成したソフトが出来てない。 そして、飽きて次の言語に・・・
92 名前:デフォルトの名無しさん [2008/10/13(月) 16:59:34 ] perlで作ったものは完成したけど表面的なものはともかく中身はぐちゃぐちゃだった phpで作ったものは完成したけど楽しくなかった rubyで作ったときは楽しかったけど完成しなかった pythonは楽しく作れてしかも完成出来て中身もすっきり
93 名前:デフォルトの名無しさん [2008/10/17(金) 08:24:52 ] Pythonはパッケージ管理がしっかりしているから良い バイナリ配布方法も含めて
94 名前:デフォルトの名無しさん [2008/10/24(金) 18:39:41 ] setuptools で bdist_wininst は Windows でしか 使えないと思っていたが,Linux 上でもできた・・・ exe ファイルが出来やがった… Windows な友人に渡すためだけに Windows 上で setuptools 動かしてたおれって orz
95 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 21:26:36 ] >>94 distutils/command/ にWindows用のインストーラーのexeが入ってて bdist_wininst すると必要なファイルを作って固めてインストーラーの後ろにくっつけてるから
96 名前:デフォルトの名無しさん [2008/12/29(月) 21:03:17 ] age
97 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 22:29:59 ] sage
98 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 13:04:24 ] 今日から始めた、おっぱいそん。 今チュートリアル4が終わりそう。 3日くらいでそこそこ使えるようになるかな? ゆっくりまったりこの正月で覚えるぜ。
99 名前:デフォルトの名無しさん [2008/12/31(水) 00:20:21 ] うおおおおおおおおおおチュートリアル大体読み終わったぜ。 バストサイズはアップした。形だな、次は、うん。 次はどこに進めばいいんだろうか。 とりあえずもっかい読み直すか。
100 名前:デフォルトの名無しさん [2008/12/31(水) 07:38:58 ] 工学社のはじPyこうたのはいいんだが ネットワークプログラミングのほうだた 一冊目ほしいなー
101 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 15:47:06 ] フッフフウァッ!ユクゾッ ユクゾッ ユクゾッ フッフフウァッ!ユクゾッ ユクゾッ ユクゾッ ユクゾッ フッフフウァッ!ユクゾッ ユクゾッ ユクゾッ フッフフウァッ!ユクゾッ ユクゾッ ユクゾッ ユクゾッ
102 名前:デフォルトの名無しさん [2009/01/04(日) 23:09:15 ] ┏━━━━━━━━━━━━━━━━━━━━━┓ ┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃ ┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃ ┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃ ┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃ ┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃ ┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃ ┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛ ∩ 〈〈〈 ヽ 〈⊃ } (\___/) | | ( ̄l▼  ̄)! ! / ● ● | / / l ___\lミ/ /▲ ( 。--。 ) /■___ (( ̄)) 新年あけましておめでとうございますーーっ! (___)  ̄/ 2009年 元旦