TypeError: unsupported operand type(s) for -: 'Decimal' and 'Decimal'. Why?

Discussion in 'Python' started by Gilbert Fine, Jul 30, 2007.

  1. Gilbert Fine

    Gilbert Fine Guest

    This is a very strange exception raised from somewhere in our program.
    I have no idea how this happen. And don't know how to reproduce. It
    just occurs from time to time.

    Can anyone give me some suggestion to fix this?

    Thanks.

    --
    Gilbert
     
    Gilbert Fine, Jul 30, 2007
    #1
    1. Advertising

  2. Gilbert Fine

    Steve Holden Guest

    Re: TypeError: unsupported operand type(s) for -: 'Decimal' and'Decimal'. Why?

    Gilbert Fine wrote:
    > This is a very strange exception raised from somewhere in our program.
    > I have no idea how this happen. And don't know how to reproduce. It
    > just occurs from time to time.
    >
    > Can anyone give me some suggestion to fix this?
    >

    If it's raised from "somewhere in your program" the first this to do is
    disable the except clause that is apparently stopping you from getting a
    full traceback, then post that traceback with an appropriate code snippet.

    People on this list are good at guessing, but it's better to give then
    some hard information to work with.

    Otherwise you are calling the shop (garage?) and saying "My car doesn't
    work, can you tell me how to fix it, please?"

    regards
    Steve
    --
    Steve Holden +1 571 484 6266 +1 800 494 3119
    Holden Web LLC/Ltd http://www.holdenweb.com
    Skype: holdenweb http://del.icio.us/steve.holden
    --------------- Asciimercial ------------------
    Get on the web: Blog, lens and tag the Internet
    Many services currently offer free registration
    ----------- Thank You for Reading -------------
     
    Steve Holden, Jul 30, 2007
    #2
    1. Advertising

  3. Gilbert Fine

    Steve Holden Guest

    Re: TypeError: unsupported operand type(s) for -: 'Decimal' and'Decimal'. Why?

    Gilbert Fine wrote:
    > This is a very strange exception raised from somewhere in our program.
    > I have no idea how this happen. And don't know how to reproduce. It
    > just occurs from time to time.
    >
    > Can anyone give me some suggestion to fix this?
    >

    If it's raised from "somewhere in your program" the first this to do is
    disable the except clause that is apparently stopping you from getting a
    full traceback, then post that traceback with an appropriate code snippet.

    People on this list are good at guessing, but it's better to give then
    some hard information to work with.

    Otherwise you are calling the shop (garage?) and saying "My car doesn't
    work, can you tell me how to fix it, please?"

    regards
    Steve
    --
    Steve Holden +1 571 484 6266 +1 800 494 3119
    Holden Web LLC/Ltd http://www.holdenweb.com
    Skype: holdenweb http://del.icio.us/steve.holden
    --------------- Asciimercial ------------------
    Get on the web: Blog, lens and tag the Internet
    Many services currently offer free registration
    ----------- Thank You for Reading -------------
     
    Steve Holden, Jul 30, 2007
    #3
  4. Re: TypeError: unsupported operand type(s) for -: 'Decimal' and'Decimal'. Why?

    On Mon, 30 Jul 2007 03:36:33 -0700, Gilbert Fine wrote:

    > This is a very strange exception raised from somewhere in our program.
    > I have no idea how this happen. And don't know how to reproduce. It
    > just occurs from time to time.


    Maybe different `Decimal`\s? Here's how to reproduce such a traceback:

    In [20]: from decimal import Decimal

    In [21]: a = Decimal()

    In [22]: class Decimal(object):
    ....: pass
    ....:

    In [23]: b = Decimal()

    In [24]: a - b
    <type 'exceptions.TypeError'> Traceback (most recent call last)

    /home/bj/<ipython console> in <module>()

    <type 'exceptions.TypeError'>: unsupported operand type(s) for -: 'Decimal' and 'Decimal'

    Ciao,
    Marc 'BlackJack' Rintsch
     
    Marc 'BlackJack' Rintsch, Jul 30, 2007
    #4
  5. Gilbert Fine

    Duncan Booth Guest

    Marc 'BlackJack' Rintsch <> wrote:

    > On Mon, 30 Jul 2007 03:36:33 -0700, Gilbert Fine wrote:
    >
    >> This is a very strange exception raised from somewhere in our
    >> program. I have no idea how this happen. And don't know how to
    >> reproduce. It just occurs from time to time.

    >
    > Maybe different `Decimal`\s? Here's how to reproduce such a
    > traceback:
    >

    <snip>

    Or even just one Decimal type but not one which supports subtraction:

    >>> class Decimal(object):

    pass

    >>> a = Decimal()
    >>> b = Decimal()
    >>> a-b


    Traceback (most recent call last):
    File "<pyshell#4>", line 1, in <module>
    a-b
    TypeError: unsupported operand type(s) for -: 'Decimal' and 'Decimal'

    Another option of course is that Decimal() did support substraction but
    someone deleted it:

    >>> from decimal import Decimal
    >>> del Decimal.__sub__
    >>> Decimal()-Decimal()


    Traceback (most recent call last):
    File "<pyshell#15>", line 1, in <module>
    Decimal()-Decimal()
    TypeError: unsupported operand type(s) for -: 'Decimal' and 'Decimal'
     
    Duncan Booth, Jul 30, 2007
    #5
  6. Gilbert Fine

    Gilbert Fine Guest

    Thanks. I think I have some direction to do logging, to get more
    information about this problem.

    It seems that I don't get used to dynamic language yet.

    --
    Gilbert

    On Jul 30, 7:20 pm, Duncan Booth <> wrote:
    > Marc 'BlackJack' Rintsch <> wrote:
    >
    > > On Mon, 30 Jul 2007 03:36:33 -0700, Gilbert Fine wrote:

    >
    > >> This is a very strange exception raised from somewhere in our
    > >> program. I have no idea how this happen. And don't know how to
    > >> reproduce. It just occurs from time to time.

    >
    > > Maybe different `Decimal`\s? Here's how to reproduce such a
    > > traceback:

    >
    > <snip>
    >
    > Or even just one Decimal type but not one which supports subtraction:
    >
    > >>> class Decimal(object):

    >
    > pass
    >
    > >>> a = Decimal()
    > >>> b = Decimal()
    > >>> a-b

    >
    > Traceback (most recent call last):
    > File "<pyshell#4>", line 1, in <module>
    > a-b
    > TypeError: unsupported operand type(s) for -: 'Decimal' and 'Decimal'
    >
    > Another option of course is that Decimal() did support substraction but
    > someone deleted it:
    >
    > >>> from decimal import Decimal
    > >>> del Decimal.__sub__
    > >>> Decimal()-Decimal()

    >
    > Traceback (most recent call last):
    > File "<pyshell#15>", line 1, in <module>
    > Decimal()-Decimal()
    > TypeError: unsupported operand type(s) for -: 'Decimal' and 'Decimal'
     
    Gilbert Fine, Jul 30, 2007
    #6
  7. Gilbert Fine

    Zentrader Guest

    > from decimal import Decimal
    >
    > In [21]: a = Decimal()
    >
    > In [22]: class Decimal(object):
    > ....: pass
    > ....:
    >
    > In [23]: b = Decimal()
    >
    > In [24]: a - b


    Perhaps I don't understand what you are doing here, but on line 22 you
    overload Decimal. If you just have
    a = Decimal()
    b = Decimal()
    print a-b yields 0. decimal.Decimal() can be subtracted from
    decimal.Decimal(). decimal.Decimal() can not be subtracted from class
    Decimal(object). I would assume that they are different types. Using
    the original code, print type(a), type(b).
     
    Zentrader, Jul 31, 2007
    #7
  8. Gilbert Fine

    John Machin Guest

    On Jul 31, 9:31 am, Zentrader <> wrote:
    > > from decimal import Decimal

    >
    > > In [21]: a = Decimal()

    >
    > > In [22]: class Decimal(object):
    > > ....: pass
    > > ....:

    >
    > > In [23]: b = Decimal()

    >
    > > In [24]: a - b

    >
    > Perhaps I don't understand what you are doing here, but on line 22 you
    > overload Decimal.


    In the utter absence of any clues from the OP, Marc was demonstrating
    one possible way that the puzzling [Can't subtract one Decimal
    instance from another???] error message could have been caused.
     
    John Machin, Jul 31, 2007
    #8
  9. Gilbert Fine

    Zentrader Guest

    > In the utter absence of any clues from the OP, Marc was demonstrating
    > one possible way that the puzzling [Can't subtract one Decimal
    > instance from another???] error message could have been caused.


    Ah yes. Until this is no longer true, "In the utter absence of any
    clues from the OP", we can do no more. My appologies to Marc for
    misinterpretation.
     
    Zentrader, Aug 1, 2007
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Martin Koekenberg
    Replies:
    3
    Views:
    1,386
    Martin Koekenberg
    Aug 26, 2004
  2. Brett C.
    Replies:
    2
    Views:
    2,899
    Martin Koekenberg
    Aug 30, 2004
  3. Jay Parlar
    Replies:
    0
    Views:
    814
    Jay Parlar
    Mar 17, 2006
  4. Jordan Harry
    Replies:
    1
    Views:
    517
    Sean DiZazzo
    May 2, 2008
  5. Íßêïò Ãêñ33ê
    Replies:
    14
    Views:
    1,629
    Íßêïò Ãêñ33ê
    May 28, 2013
Loading...

Share This Page