>> The values of optional arguments are only once evaluated (when Python >> reads the definition). If you place there mutable objects like e.g. a >> list most of the time the effect you see is not what you want. So you >> have to write it a bit different. >> >> def __init__(self, q = None): >> if not q: q = [] >> self.queue = q >> >> Now you get a fresh list for each instance. >> > Thank you very much. I will use your code as a "recipe", while I still > try to understand the mechanism and the reasons behind it. For me this > feels odd.
Hi Barbara, It is odd. *grin* There were at least two possible design choices to Python's behavior here. On every __init__, should Python re-evaluate the default argument expression? Or should that value be fixed? The designers of Python chose to the former, which leads to slight weirdness like this. _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
