Python チュートリアル-クラス

  1. OOP の概要
  2. Python クラスとオブジェクト
  3. Python クラスコンストラクター
  4. クラスの属性を削除します

このセクションでは、クラス、オブジェクトなどの Python オブジェクト指向プログラミング(OOP)の基本について説明します。

Python はオブジェクト指向プログラミング言語です。つまり、Python のすべてはオブジェクトです。

OOP の概要

オブジェクト指向プログラミング(OOP)の基本は、次の用語で構成されています。

  1. クラス
  2. データメンバー
  3. メソッド
  4. オブジェクト
  5. コンストラクター
  6. メソッドのオーバーロード
  7. オペレーターの過負荷
  8. 継承
  9. クラスインスタンスとインスタンス化

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 クラスの組み込み属性がいくつかあります。

  1. __dict__:クラスの名前空間を含む辞書です。
  2. __doc__:クラスのドキュメント文字列
  3. __name__:クラスの名前
  4. __module__:クラスが定義されているモジュールです。
  5. __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'}
comments powered by Disqus