2011-12-20 3 views
0

Предположим, что я создаю класс в python, но я не определяю метод __cmp__ для моего класса. Теперь я создаю два экземпляра этого класса и сравниваю их. Какой метод cmp использует Python? Я запустил код, и он возвращает false при сравнении для равенства. Сравнивает ли Python адреса памяти?Сравнение объектов Python без определения __cmp__ для класса

class A(object): 
    def __init__(self, s): 
     self.s = s 

    def __str__(self): 
     return self.s 

x1 = A("jim") 
x2 = A("jim") 
print x1 == x2 

Shell говорит:

False 
+0

Документация достаточно понятна для методов '__le__',' __lt__' и т. Д. Что ты спрашиваешь? Ссылка http://docs.python.org/reference/datamodel.html#object.__lt__ –

ответ

2

lambda x,y: id(x)==id(y) если память.

+0

Я искал что-то подобное через страницы руководства Python, но не смог найти его. Где вы это нашли? – BlackSheep

+0

@BlackSheep, не помню хорошо, но я думаю, что нашел его, читая исходный код. –

+0

№ Богатые сравнения используются. http://docs.python.org/reference/datamodel.html#object.__eq__ –

Смежные вопросы