[New-bugs-announce] [issue25794] __setattr__ does not always overload operators

Dominik Schmid report at bugs.python.org
Fri Dec 4 03:52:37 EST 2015


New submission from Dominik Schmid:

While implementing my own Integer class that keeps track of when operations are applied I noticed that setattr had a strange behaviour when I tried to wrap operator functions.

When the attribute string had a different id to its literal it failed to overload the operator.
Are we doing a 'is' rather than a '==' somewhere in setattr?


expected result: 
139723705431168    a.__add__(b)= (5)    a+b= (5)
139723705431168    a.__add__(b)= (5)    a+b= (5)
139723704361584    a.__add__(b)= (5)    a+b= (5)


actual result:
139723705431168    a.__add__(b)= (5)    a+b= (5)
139723705431168    a.__add__(b)= (5)    a+b= (5)
139723704361584    a.__add__(b)= (5)    a+b=
Traceback (most recent call last):
  File "/home/dom/Documents/leastOps/bug.py", line 41, in <module>
    testSetattr(funcName3)
  File "/home/dom/Documents/leastOps/bug.py", line 28, in testSetattr
    print '   a+b=', a+b
TypeError: unsupported operand type(s) for +: 'Integer' and 'Integer'



version:
2.7.10 (default, Oct 14 2015, 16:09:02) 
[GCC 5.2.1 20151010]
ubuntu 14.10

----------
components: Interpreter Core
files: bug.py
messages: 255853
nosy: Dominik Schmid
priority: normal
severity: normal
status: open
title: __setattr__ does not always overload operators
type: behavior
versions: Python 2.7
Added file: http://bugs.python.org/file41234/bug.py

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


More information about the New-bugs-announce mailing list