2011-12-20 2 views
0

파이썬으로 클래스를 생성한다고 가정하고, 클래스에 __cmp__ 메소드를 정의하지 않았습니다. 이제 그 클래스의 인스턴스를 두 개 만들고이를 비교합니다. 파이썬은 어떤 cmp 메서드를 사용합니까? 난 코드를 실행하고 평등을 비교할 때 false를 반환합니다. 파이썬은 메모리 주소를 비교합니까?클래스에 __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 

쉘은 말합니다 :

False 
+0

문서는'__le__','__lt__' 등의 메소드에서 아주 명확합니다. 뭘 물어 보는 거냐? 참고 http://docs.python.org/reference/datamodel.html#object.__lt__ –

답변

2

lambda x,y: id(x)==id(y) 메모리를 제공합니다.

+0

필자는 파이썬 맨 페이지를 통해 그와 같은 것을 찾고 있었지만 찾지 못했습니다. 어디서 찾았 니? – BlackSheep

+0

@BlackSheep, 잘 기억하지 못하지만 소스 코드를 읽는 동안 발견했다고 생각합니다. –

+0

아니요. 리치 비교가 사용됩니다. http://docs.python.org/reference/datamodel.html#object.__eq__ –