Python怒られ日記 vol.1 クラスのコンストラクタにデフォルト引数を与えるとき

class A:

  def __init__ ( var1 = 0, var2 = [] , var3 = [0,0,0]):

    self.var1 = var1

    self.var2 = var2

    self.var3 = var3

 

としたとき,Aを複数newした時にvar2やvar3はnewされず同じObjectを参照する.参照周りのことをちょっと分かる人ならそれはそうなんだけどミスった.

 

class A:

  def __init__ (var1 = 0, var2 = None, var3 = None):

    self.var1 = var1

    self.var2 = [ ] if var2 is None else var2

    self.var3 = [0,0,0] if var3 is None else var3

 

とすれば解決.