New submission from Jethro: Look at this simple code:
class A: tot = 0 def __init__(self, a): self.tot += a x = A(3) print(x.tot, A.tot) Result from print: 3 0 What the interpreter did was that it first resolved self.tot to be the class field tot, which resolves to 0, then it created an instance field tot to hold the result 3. This is not correct, as one single self.tot meant two different things. Two ways to fix this: 1. report a name undefined error (interpret self.tot as instance field) 2. increase A.tot (interpret self.tot as class field) Clearly 1 seems more naturally to Python, even though I wished python could disallow a class field to be shadowed by instance field, which seems quite a reasonable thing to do. ---------- components: Interpreter Core messages: 239714 nosy: jethro priority: normal severity: normal status: open title: in-place addition of a shadowed class field type: behavior versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue23824> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com