So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

Python の new style class [Python]

Python 2.2 から新しいタイプのクラス new type class が使えて、それが便利らしい。
と、いうわけで new style class とはどんなもんか、いろいろ読み直してみた。

それほど便利な感じがしないのは、私がちゃんと理解していないせいか?
(メソッドの挙動については、リファレンスマニュアルを参照してもらうとして)
以下は、そのメモ書き。変なところがあったら指摘してくだされ
---------------------------------------------------------------------
Python 2.2 からは ビルトイン型(object, list, dict, file)を継承できる
ようになった
ビルトイン型を継承するクラスは new style class になる

[New Style Class]
class C(object): pass

[Old Style Class]
class C: pass

Zope 2.8 (ZODB 3.3) では、new style class が使えるようになる。

new style class の新機能
1.staticmethod()で静的メソッドの定義ができる
2.classmethod()でクラスメソッドの定義ができる
3.property()でインスタンス属性の挙動の定義ができる
4.以下のような特殊メソッドが使える
__new__()
__delattr__(), __getattribute__(), __setattr__()
__hash__(), __repr__(), __str__()
従来からあるメソッド __getattr__() は、解決できない属性名の時だけ呼ばれるが
__getattribute__() は、属性値の取得が必要になったときに、常に呼ばれる。
5.__slots__ により、定義できる属性名の制限ができる
 __slots__ を定義することによりメモリがやや節約でき、参照の速度がすこし上がる
6.多重継承の時のメソッドの検索順序が従来のクラスと異なる
new syle クラスでは、すべての親クラスのメソッドを探してから祖先をたどる。

参考
Pythonクイックリファレンスの5章
http://www.amazon.co.jp/exec/obidos/ASIN/4873111773/249-9652799-5262739

Unifying types and classes in Python 2.2
http://www.python.org/2.2/descrintro.html

What's New in Python 2.2
http://www.python.org/doc/2.2.3/whatsnew/

Python リファレンスマニュアル
http://www.python.jp/pub/doc_jp/ref/attribute-access.html
http://www.python.jp/pub/doc_jp/ref/new-style-attribute-access.html
http://www.python.jp/pub/doc_jp/ref/slots.html


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0