2009-07-24 16 views
4

먼저 코드를 서로 다른 종류의 비교? 이에 대한 올바른 관용어가 이 있습니까? 파이썬에서

Related question:

구글에 둘러보고의 비트는 내가 python docs 몇 가지 관련 정보를 발견했다. 인용 :

구현상의주의 : 번호를 제외하고 다른 유형의 객체는 자신의 형 이름으로 을 정렬; 적절한 비교를 지원하지 않는 동일한 유형의 개체 은 주소로 정렬됩니다.

이것은 내가 특별한 경우가있는 매우 어려운 시간 dict들과 이행 성을 mantaining을 가질 수 있다는 것을 내가 그 동작을 따라하고 싶다면, 내가

class myClass(object): 
    def __cmp__(self, other): 
     return (cmp(self.__class__.__name__, other.__class__.__name) or 
       cmp(self.__something, other.__something)) 

특히 불행한 사용해야한다 제안 I 구현하기를 희망했다.

내 주장의 유형을 확인해야합니까? 파이썬으로도 이것을 볼 수 있습니까?

+0

질문을 자세히 설명해 주시겠습니까? '파이썬에서 다른 유형과 동일한 순서 지정'을하는 것은 무엇을 의미합니까? –

+0

cmp (dict(), str())는 0이 아닙니다. 미리 정의 된 유형의 wrt와 내 성질을 유지하고 싶습니다. 그러나 실제로 그렇게하는 방법을 모르겠습니다. – SingleNegationElimination

답변

1

불행히도 파이썬 2는 그러한 "외계인"비교를 지원했습니다 (다행스럽게도 파이썬 3에서는 폐지되었습니다). 예를 들어 float와 int는 직접 비교할 수 있습니다 (코드 비교시 유형 비교 무시 없음).하지만 복잡한 경우 비교를 수행합니다 (== 및! = 제외). 여러 가지 특수한 경우가 있기 때문에 내장 동작을 에뮬레이트하는 것은 쉽지 않습니다. 항상 예외를 발생시킵니다. 정말로은 이러한 모든 단점과 흔들림을 에뮬레이션해야합니까? 그러한 필요성은 매우 드문 일입니다. 귀하의 유형이 "숫자"(예 : decimal.Decimal로 보임) 인 경우, 다른 숫자 유형과 잘 맞아야하지만, "비교 가능한 숫자"가 아닌 유형은 실용적인 단어가 적습니다.

0

실제로 무엇을하려고합니까? 왜 다른 클래스의 인스턴스를 클래스/유형별로 정렬하거나 비교하고 싶습니까?

실제로 문제를 게시하지 않은 경우 솔루션을 제안하기가 어렵습니다.

사용자 지정 클래스에 대한 자체 비교 메서드를 정의해야하며, 수행 한 비교가 의미가 있는지 확인하는 것은 주로 사용자가 결정합니다.

달성하려는 내용을 설명하십시오. 이것은 파이썬 적 방법이 아닐 수도 있습니다.