Discussion in 'Python' started by rdmurray@bitdance.com, Feb 28, 2009.

  1. Guest

    Sean Novick <> wrote:
    > First lookup:
    > Traceback (most recent call last):
    > File "F:\CSC113 Module 4 CA\sample database.py", line 72, in <module>
    > class phonedb:
    > File "F:\CSC113 Module 4 CA\sample database.py", line 146, in phonedb
    > for entry in foo.lookup('reifsch'):
    > File "F:\CSC113 Module 4 CA\sample database.py", line 101, in lookup
    > if cmp(e, string) =3D=3D 0:
    > TypeError: comparison did not return an int
    > I do not know what this error means. I tried to look it up in help, but to no
    > avail. If someone could please help or tell me where I could find an answer.
    > Thanks.

    The 'cmp' function (which is depricated, by the way) asks the two
    arguments to compare themselves. It does this by invoking the __cmp__
    method on the first object, passing it the second. (Actually it's more
    complicated than that, but it will do as a partial explanation for now).
    The __cmp__ method is expected to return an integer, which represents
    the results of doing the comparison (see the docs if you want to know
    the values...but as I said cmp and __cmp__ a depricated).

    So, whatever 'e' is (and we can't tell from the traceback, you'll have
    to work through your code to figure it out, probably by sprinkling in
    'print' statements), its __cmp__ method didn't return an integer.

    When you fix this, I would recommend converting to using rich comparisons
    (__eq__, __lt__), etc, since __cmp__ is eventually going away (it doesn't
    exist in Python 3.x).

    , Feb 28, 2009
    1. Advertisements

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.

Share This Page