Python チュートリアル-クラス
このセクションでは、クラス、オブジェクトなどの Python オブジェクト指向プログラミング(OOP)の基本について説明します。
Python はオブジェクト指向プログラミング言語です。つまり、Python のすべてはオブジェクトです。
OOP の概要
オブジェクト指向プログラミング(OOP)の基本は、次の用語で構成されています。
- クラス
- データメンバー
- メソッド
- オブジェクト
- コンストラクター
- メソッドのオーバーロード
- オペレーターの過負荷
- 継承
- クラスインスタンスとインスタンス化
Python クラスとオブジェクト
クラスはオブジェクトのアウトラインと考えることができますが、オブジェクトはデータメンバーとメンバー関数のコレクションです。
クラスには、そのクラスのオブジェクトを使用してアクセスできるデータメンバー(変数)とメンバー関数(メソッド)が含まれます。
クラスを作成する
クラスは、class
キーワードとクラス名を使用して作成されます:
構文は次のとおりです。
class NameofClass:
# data members of the class
# member functions of the class
例:
>>> class Waiter:
name = "Andrew"
def display():
print('Waiter Class')
>>> print(Waiter.display)
<function Waiter.display at 0x0359E270>
>>> print(Waiter.name)
Andrew
この例では、データメンバ name
とメンバメソッドdisplay()
を含む Waiter
という名前のクラスを作成します。
クラスのオブジェクトインスタンスを作成する
オブジェクトインスタンスは、次の構文を使用して作成できます。
obj = className()
例:
>>> w = Waiter()
>>> print(w.name)
Andrew
>>> w.display()
Waiter Class
ここでは、ドット演算子を使用して、クラスのメンバー(属性)にアクセスするために Waiter
クラスのオブジェクトが使用されていることがわかります。
クラス属性
データメンバーとメンバー関数に加えて、Python クラスの組み込み属性がいくつかあります。
__dict__
:クラスの名前空間を含む辞書です。__doc__
:クラスのドキュメント文字列__name__
:クラスの名前__module__
:クラスが定義されているモジュールです。__bases__
:は、基本クラスを含むタプルです。
これらの属性には、ドット演算子を使用してアクセスできます。
例:
>>> class Waiter:
"This is a waiter class"
name="Andrew"
def display():
print("You are in waiter class")
>>> w = Waiter()
>>> print(w.__doc__)
This is a waiter class
>>> print(w.__dict__)
{}
>>> print(w.__module__)
__main__
Python クラスコンストラクター
Python OOP のコンストラクターは、__init __()
を使用して作成されます。この組み込みメソッドは、対応するクラスのオブジェクトが作成されるときに呼び出される特別なメソッドです。
コンストラクターは、クラスのデータメンバーを初期化するために使用されます。
>>> class Waiter:
def __init__(self, n):
self.name=n
self.age=20
def display(self):
print(self.name)
>>> w=Waiter('Rob')
>>> w.display()
Rob
ここで、self
引数はコンストラクター定義とすべてのクラスメソッドで使用されます。したがって、w.display()
などの関数を呼び出すと、Waiter.display(w)
として解釈されます。
クラスの属性を削除する
del
ステートメントを使用して、クラスの属性とオブジェクトを削除できます。
>>> w=Waiter('Rob')
>>> w.__dict__
{'name': 'Rob', 'age': 20}
>>> del w.age
>>> w.__dict__
{'name': 'Rob'}