Python 複数コンストラクター
このチュートリアルでは、コンストラクターと、Python で複数のコンストラクターの必要性に対処する方法について説明します。
Python のコンストラクター
Java、C++、C# プログラミング言語などのプログラミング言語では、クラスのオブジェクトが初期化されたときにのみ実行されるコンストラクター関数の概念があります。コンストラクター関数は、すべてのクラス属性を初期化するために使用されます。このコンストラクター関数の名前は、クラスの名前と同じです。コンストラクター関数の概念は Python でも同じですが、コンストラクター関数の名前はすべてのクラスで __init__()
です。Python のコンストラクターは、常に 1つのパラメーター、つまり呼び出し元オブジェクトへのポインターを取ります。次のコードスニペットは、Python でパラメーター化されていないコンストラクターを作成する方法を示しています。
class Person:
def __init__(self):
print("Constructor Function")
if __name__ == "__main__":
p1 = Person()
出力:
Constructor Function
Person
クラスのパラメーター化されていないコンストラクターを作成し、main 関数で Person
クラスオブジェクトを作成しました。コンストラクターは、p1 = Person()
でオブジェクトを作成したときに呼び出されました。
Python の複数のコンストラクター
Java、C#、および C++ プログラミング言語には、複数のコンストラクターと呼ばれる概念があり、1つのクラスに対して必要な数のコンストラクターを作成できます。残念ながら、Python では 1つのクラスに複数のコンストラクターを定義することはできません。この制限を回避する一般的な方法は、デフォルトのパラメーターコンストラクターを使用することです。デフォルトのパラメーターコンストラクターは、クラスオブジェクトの作成中にパラメーターが渡されなかった場合に、クラス属性に値を自動的に割り当てるコンストラクターです。オブジェクトの作成中に値が指定された場合、デフォルトのパラメーターコンストラクターは指定された値をクラス属性に割り当てます。次のコードスニペットは、Python のデフォルトのパラメーターコンストラクターを使用して複数のコンストラクターが不要になる方法を示しています。
class Person:
def __init__(self, name="Tom"):
self.name = name
def show(self):
print("Name = ", self.name)
if __name__ == "__main__":
p1 = Person()
p2 = Person("Mark")
p1.show()
p2.show()
出力:
Name = Tom
Name = Mark
関数定義中にデフォルト値を指定することにより、上記のコードでデフォルトのパラメーターコンストラクターを作成しました。Person
クラスのコンストラクターはパラメーター名を受け取り、それをクラスパラメーターname
に割り当てます。パラメータ名のデフォルト値は Tom
です。main 関数で Person
クラスの 2つのオブジェクト p1
と p2
を作成しました。オブジェクト p1
は、初期化中に値を指定しません。オブジェクト p2
は、コンストラクターパラメーターとして Mark
を渡します。次に、p1
と p2
を使用して show()
関数を呼び出しました。show()
関数は、name
属性の値を表示します。p1
が show()
関数を呼び出すと、出力はデフォルト値 Name = Tom
になりますが、p2
が show()
関数を呼び出すと、指定したため、出力は Name = Mark
になります。オブジェクト p2
の作成中に Mark
。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn