開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
- Script言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のVI部(クラスとオブジェクト指向プログラミング)のまとめ演習の練習問題4(METAクラス)を解いてみる。
4.
コード(TextWrangler)
#!/usr/bin/env python #encoding: utf-8 class META: def __getattr__(self,name): print "get name: ", name def __setattr__(self,name,value): print "set name: ", name, " value: ", value
入出力結果(Terminal)
$ python Python 2.7.2 (default, Feb 12 2012, 23:50:38) [GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.12)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from python_program import META >>> a=META() >>> a.data='kamimura' set name: data value: kamimura >>> a.append get name: append >>> a.sort get name: sort >>> a+10 get name: __coerce__ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'NoneType' object is not callable >>> a[2] get name: __getitem__ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'NoneType' object is not callable >>> a[1:] get name: __getslice__ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'NoneType' object is not callable >>> a[1:4] get name: __getslice__ Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'NoneType' object is not callable >>> ^D $
属性へのアクセスコード以外の、+演算子、インデクシング、スライシングなどのコードはエラーになる。
0 コメント:
コメントを投稿