重複の可能性:
Pythonの「驚き最小の原則」:可変のデフォルト引数
次のpythontest.pyモジュールを検討してください。
class Container:
    def __init__(self, str_list=[]):
        self.str_list = str_list
    def from_strings(self, st=""):
        self.str_list.append(st)
        return self
o1 = Container().from_strings(st="o1")
o2 = Container().from_strings(st="o2")
o3 = Container().from_strings(st="o3")
def prnt():
    print("o1's list:"+str(o1.str_list))
    print("o2's list:"+str(o2.str_list))
    print("o3's list:"+str(o3.str_list))
if __name__ == '__main__':
    prnt()
python test.py:の出力はなぜですか?
  o1's list:['o1', 'o2', 'o3']
  o2's list:['o1', 'o2', 'o3']
  o3's list:['o1', 'o2', 'o3']
それ以外の:
  o1's list:['o1']
  o2's list:['o2']
  o3's list:['o3']
(同じモジュール内の異なるインスタンスのフィールド(str_list)が混同される理由がわからないようです。この概念を説明するPythonドキュメントへのポインターをいただければ幸いです)