Python Unittest

Python Unittest求助
写了一个类,做单元测试的时候碰到了一个很诡异的问题。

from unittest import TestCase
class Account():
    def __init__(self, name, value = 0, subs = {}):
        self.name = name
        self.subs = subs
        self.value = value

class AccountTest(TestCase):
    def test_empty(self):
        base = Account('test', 100)
        self.assertEqual(base.name, 'test')
        self.assertEqual(base.value, 100)
        self.assertEqual(base.subs, {})


这一段代码跑出来没问题。可是在后面加了一个方法和测试之后,第一个的结果却不对了~

from unittest import TestCase
class Account():
    def __init__(self, name, value = 0, subs = {}):
        self.name = name
        self.subs = subs
        self.value = value

    def add_account(self, son):
        self.subs[son.name] = son

class AccountTest(TestCase):
    def test_empty(self):
        base = Account('test', 100)
        self.assertEqual(base.name, 'test')
        self.assertEqual(base.value, 100)
        self.assertEqual(base.subs, {})

    def test_add_account(self):
        base = Account('test', 100)
        father = Account('father')
        father.add_account(base)
        self.assertEqual(father.subs, {base.name: base})


有人知道是为什么么?

------解决方案--------------------
貌似参数subs = {}用字典不对吧,默认参数只初始一次,变成是实例间共享的,没特别需求最好是改成不可变类型,类似:
class Account():
    def __init__(self, name, value = 0, subs = None):
        self.name = name
        self.subs = {} if subs == None else subs
        self.value = value