[issue8762] default value in constructor not unique across objects

andrew report at bugs.python.org
Wed May 19 02:35:35 CEST 2010


New submission from andrew <atcuno at gmail.com>:

After debugging for a while I finally released that I stumbled across a Python bug (at least I believe it is). Here is a proof of concept that produces the issue:

!/usr/bin/python

class blah:

    def __init__(self, items=[]):
        self.items = items

a = blah()
b = blah()

a.items.append("apples")
b.items.append("oranges")

print a.items
print b.items
print id(a.items)
print id(b.items)


and here is the output when the program is run:

root at x:~# python pythonbug.py
['apples', 'oranges']
['apples', 'oranges']
135923500
135923500
root at x:~#

as you can see the 'items' reference is the same for both objects even though they are different objects. I checked the manual and I couldn't find anything explaining such behavior. Can this possibly be correct?

My python info:

Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48)

----------
messages: 106018
nosy: bolt
priority: normal
severity: normal
status: open
title: default value in constructor not unique across objects
type: behavior
versions: Python 2.5

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8762>
_______________________________________


More information about the Python-bugs-list mailing list