Pythonでは、クラスのリストを初期化する方法があります。この記事では、その方法について詳しく説明します。
クラスのリストの初期化
Pythonのクラスでは、リストをクラス変数として初期化することができます。しかし、この方法には注意が必要です。なぜなら、リストをクラス変数として初期化すると、インスタンス間でリストが共有されてしまうからです。
例えば、以下のようなクラスを考えてみましょう。
class Sample:
int_x:int = 0
list_y:list = []
def set_int(self, val):
self.int_x = val
def list_add(self, val):
self.list_y.append(val)
このクラスでは、int_x
とlist_y
という2つのクラス変数があります。int_x
は整数、list_y
はリストを格納します。
しかし、このクラスの2つのインスタンスを作成し、一方のインスタンスでlist_y
に値を追加すると、もう一方のインスタンスのlist_y
も変更されてしまいます。
解決方法
この問題を解決するためには、コンストラクタ内でリストを初期化する方法があります。
以下に、修正後のクラスを示します。
class Sample:
int_x:int = 0
list_y:list
def __init__(self):
self.list_y = []
def set_int(self, val):
self.int_x = val
def list_add(self, val):
self.list_y.append(val)
この修正により、各インスタンスは独自のlist_y
を持つようになり、一方のインスタンスでlist_y
を変更しても、もう一方のインスタンスには影響が出ません。
以上が、Pythonでクラスのリストを初期化する方法とその注意点についての説明です。この情報が、Pythonのクラスとリストの理解に役立つことを願っています。.