New submission from Cal Leeming <cal.leem...@simplicitymedialtd.co.uk>:

So, when you create a class like this:

class Obj:
    children = []

The 'children' object essentially becomes shared across all instances of Obj. 
To get around this, you have to use:

class Obj:
    children = None
    def __init__(self):
        children = []

I have attached proof of concept code which can trigger this bug. Although I 
have almost 8 years of experience with Python, this is the first time I have 
actually noticed this, however, I am sure that similar things have happened in 
the past, and I just didn't investigate it enough to realise what was going on.

Although this isn't a bug, it is likely that other advanced developers may also 
not know about, or have been caught out by this little gotcha. So, perhaps it 
might be worth documenting it somewhere?

Let me know your thoughts.

Cal

----------
components: Interpreter Core
files: obj.py
messages: 134919
nosy: sleepycal
priority: normal
severity: normal
status: open
title: Class definition gotcha.. should this be documented somewhere?
type: feature request
versions: Python 2.7
Added file: http://bugs.python.org/file21848/obj.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue11974>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to