Почему при инициализации переменной через переменную по умолчанию в python сохраняется состояние при создании экземпляра объекта?

Сегодня я обнаружил интересную ошибку python, из-за которой многократное создание экземпляра класса выглядит как удерживающее состояние. В последующих вызовах экземпляра переменная уже определена.

Я свел проблему к следующему взаимодействию класса / оболочки. Я понимаю, что это не лучший способ инициализировать переменную класса, но он точно не должен вести себя так. Это настоящая ошибка или это «особенность»? : D

tester.py:

class Tester():
        def __init__(self):
                self.mydict = self.test()

        def test(self,out={}):
                key = "key"
                for i in ['a','b','c','d']:
                        if key in out:
                                out[key] += ','+i
                        else:   
                                out[key] = i 
                return out

Подсказка Python:

Python 2.6.6 (r266:84292, Oct  6 2010, 00:44:09) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
>>> import tester
>>> t = tester.Tester()
>>> print t.mydict
{'key': 'a,b,c,d'}
>>> t2 = tester.Tester()
>>> print t2.mydict
{'key': 'a,b,c,d,a,b,c,d'}
6
задан cbrinker 8 October 2010 в 01:23
поделиться