Python 2系では新クラススタイルと旧クラススタイルあります。その定義方法と違いを見ていきましょう。
クラススタイルの選択
Python 2系では
Python 2系(2.2以降)では新クラススタイルと旧クラススタイルの両者から選ぶことができます。その定義方法はobjectを継承するかしないかです。
Python 2系
# -*- coding: utf-8 -*- # 旧スタイルクラス class OldStyleClass: pass # 新スタイルクラス class NewStyleClass(object): pass print type(OldStyleClass) print type(NewStyleClass)
<type 'classobj'> <type 'type'>
実行結果の通りtype関数で得られる結果が異なります。
Python 3系では
Python 3系では2系でいうところの新クラススタイルのみ存在し、旧クラススタイルはありません。以下のような記述でも新スタイルクラスです。
Python 3系
# 新スタイルクラス class NewStyleClass: pass print(type(NewStyleClass))
<type 'type'>
新旧クラススタイルの相違点
クラススタイルによって出来ること、出来ないことに差があります。本項では触れませんので各ページを参照してください。
- 親クラスのメソッド呼び出し
- 呼び出し方に差があります。新クラスの方がより直感的に利用しやすくなっています。
- プロパティ
- 旧クラスでは、基本的にプロパティを利用することはできません。