|
|
Package: python2.4
Version: 2.4.2-2
Severity: normal
There seems to be a bug in classes derived from float.
For instance, consider the following:
>>> class Float(float):
... def __init__(self, v):
... float.__init__(self, v)
... self.x = 1
...
>>> a = Float(2.0)
>>> b = Float(3.0)
>>> type(a)
<class '__main__.Float'>
>>> type(b)
<class '__main__.Float'>
>>> a += b
>>> type(a)
<type 'float'>
Now, the type of a has silently changed. It was a Float, a derived class with
all kinds of properties, and it became a float -- a plain vanilla number.
My understanding is that this is incorrect, and certainly unexpected.
If it *is* correct, it certainly deserves mention somewhere in the
documentation.
It seems that Float.__iadd__(a, b) should be called.
This defaults to float.__iadd__(a, b), which should increment the float
part of the object while leaving the rest intact.
A possible explanation for this problem is that float.__iadd__ is not actually
defined, and so it falls through to
a = float.__add__(a, b), which assigns a float to a.
This interpretation seems to be correct, as one can add a destructor to the
Float class:
>>> class FloatD(float):
... def __init__(self, v):
... float.__init__(self, v)
... self.x = 1
... def __del__(self):
... print 'Deleting FloatD class, losing x=', self.x
...
>>> a = FloatD(2.0)
>>> b = FloatD(3.0)
>>> a += b
Deleting FloatD class, losing x= 1
>>>
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-686
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Versions of packages python2.4 depends on:
ii libbz2-1.0 1.0.2-11 high-quality block-sorting file co
ii libc6 2.3.5-8 GNU C Library: Shared libraries an
ii libdb4.3 4.3.29-3 Berkeley v4.3 Database Libraries [
ii libncurses5 5.5-1 Shared libraries for terminal hand
ii libreadline5 5.0-11 GNU readline and history libraries
ii libssl0.9.8 0.9.8a-3 SSL shared libraries
ii python2.4-minimal 2.4.2-2 A minimal subset of the Python lan
python2.4 recommends no packages.
-- no debconf information
--
To UNSUBSCRIBE, email to debian-bugs-dist-REQUEST@xxxxxxxxxxxxxxxx
with a subject of "unsubscribe". Trouble? Contact listmaster@xxxxxxxxxxxxxxxx
|
|