【Python3】クラス
クラス(class)
クラス(class)の定義は、次のようにします。クラス名は慣習的に大文字で始めます。
クラス定義の冒頭には、"""…""" で ドキュメントストリング を記述することができます。
class MyClass:
"""A simple example class"""
def __init__(self):
self.name = ""
def getName(self):
return self.name
def setName(self, name):
self.name = name
クラス変数・インスタンス変数
クラスは、インスタンス変数 と クラス変数 を持つことができます。
Java のように Private や Protected などのアクセス修飾子はサポートされていません。
クラス変数・インスタンス変数は、全てすべてどこからでも参照可能です。
また、クラス変数やインスタンス変数は、動的に追加することができます。
クラス変数
クラス変数は「クラス名.変数名」で表現できて、
全てのインスタンスで共通の変数です。
インスタンス変数
インスタンス変数は「インスタンス.変数名」で表現できて、
インスタンス毎に独立の変数です。
メソッド(method)
クラスが持つ関数をメソッドと呼びます。
メソッドもどこからでも参照可能です。
メソッドの第一引数には、クラスのインスタンスを指定し、第二引数以降でメソッドの引数を受け取ります。
class MyClass:
name = ""
def setName(self, name):
self.name = name
アクセス制限(_, __)
Java のように Private や Protected などのアクセス修飾子はサポートされていません。
慣習的ルールとして、アンダーバー(_)で始まる変数や関数は参照しないというがあります。
アンダーバー2個(__)で始まる変数や関数は参照が制限されます。
コンストラクタ(__init__)
__init__() メソッドは、クラスのインスタンスが生成された際に呼び出されます。
コンストラクタとも呼びます。
デストラクタ(__del__)
__del__() メソッドは、クラスのインスタンスが破棄する際に呼び出されます。
デストラクタとも呼びます。
文字列化(__str__)
__str__() は、インスタンスを暗黙的に文字列に変換する際の変換処理を定義します。
継承(inheritance)
Java などのオブジェクト指向言語と同様にクラスを継承できます。
サブクラスでは、親クラスのメソッドをオーバーライドすることができます。
親クラス(super())
super() は 親クラス を参照します。
第一引数にはクラス、第二引数にはインスタンスを指定します。
多重継承
Python でも多重継承がサポートされています。