classという概念はオブジェクト指向プログラミングという現在主流のプログラミング手法の中心概念です。 もちろん、pythonだけでなく、C++、Java、C#など主流となっている言語はいずれもオブジェクト指向プログラミングに向いた言語仕様となっています。
Pythonはオブジェクト指向という考え方を強要しませんし、classの使用も強要しませんが、他人の作ったプログラムがクラスを使用している事は多いですし、自分でもclassを使った方が便利にプログラミングできる場合があります。
今回はそのエッセンスを軽く紹介します。
長方形という概念に対応するclassを作ってみましょう。
class 長方形(object):
頂点の角度=90
def __init__(self,tate,yoko):
self.縦=tate
self.横=yoko
def 面積(self):
return self.縦*self.横
__init__
という代わった名前の関数が登場しました。これは、クラスから具体的な実体に対応するもの(インスタンスと呼ぶ)を初期化する際に自動的に呼び出される関数です。では、具体的に、このclassを使ってみましょう。 普通は、以下のようにclassからインスタンスを作ります。
長方形A=長方形(3.0,4.0)
__init__
のselfの次の引数tateに相当し、2番目の引数はyokoに相当します。print(長方形A.頂点の角度)
print(長方形A.縦)
print(長方形A.横)
90 3.0 4.0
また、面積を求める関数も定義されています。
print(長方形A.面積())
12.0
classの第一の便利さは、簡単に新しいインスタンスを生成できるという点です。
長方形B=長方形(5.0,6.0)
print(長方形B.頂点の角度)
print(長方形B.縦)
print(長方形B.横)
print(長方形B.面積())
90 5.0 6.0 30.0
classのもう一つの便利な点は、既存のclassを元に新しいclassが定義できるという点です。元になった既存のclassをsuper classと呼びます。
class 正方形(長方形):
def __init__(self,ippen):
self.縦=ippen
self.横=ippen
self.一辺=ippen
正方形C=正方形(5.0)
print(正方形C.頂点の角度)
print(正方形C.一辺)
print(正方形C.縦)
print(正方形C.横)
print(正方形C.面積())
90 5.0 5.0 5.0 25.0
classを継承する場合、super classで定義されていた関数を変更する事があります。
上の例では__init__
がオーバーロードされています。
super classに無い関数や属性(例:正方形の一辺)を定義する事もできます。
以上です。