2012-02-21 4 views
-1

기본적으로 Python 객체를 고정 길이의 숫자 (영숫자가 아님) 값으로 변환하려고합니다. 한 가지 방법은, 나는, 함께 왔어요Python에서 객체의 숫자 표현

import random 
x = Car(brand='toyota', model='corolla', price='10000', year=1997) 
random.seed(x) 

random.random() 
0.13436424411240122 

random.seed(x) 
random.random() 
0.13436424411240122 

이 더 convinient하고 일반적인 방법 (또는 라이브러리)이이 작업을 할 경우 내가 궁금하네요?

감사합니다.

+1

해시라고하지 않습니까? ;) – delnan

답변

1

방법은 다음과 같습니다

  • 수 그린

    Car 개체에 오류가 오타 할 수 있습니다.
  • 매번 random.seed() 번을 잊어 버린 경우 허약합니다.
  • 대소 문자를 구분합니다.

또한 내가 너라면 내 전화 번호 생성 방법을 조금 조정하고 싶습니다.

다른 답변은 이미 hashlib의 존재를 보여 줬습니다.

나는 아마 다음과 같이 사용합니다 : 정수 변환에

class Car: 
    # ... 
    def __hash__(self): 
     md5 = hashlib.md5() 
     for i in ('brand', 'model', 'price', 'year'): 
      attr = getattr(self, i) 
      md5.update(str(attr).lowercase()) 
     return int(md5.hexdigest(), 16) 

참조 : Convert 32-char md5 string to integer합니다.

1
def convertObjectIntoFixedLengthNumeric(obj): 
    return 17 

x = Car(brand='toyota', model='corolla', price='10000', year=1997) 
convertObjectIntoFixedLengthNumeric(x) 
17 

매우 편리하고 포괄적입니다. 찾고 있던 정보가 아니라면 더 자세한 정보를 제공하십시오 ..

+0

나는 말한다 : lol .... –

+0

좋은 하나. 더 많은 유머 감각! – WeaselFox

+1

))에 따라 http://xkcd.com/221/ – georg

0

내장형 id-function을보고 싶을 수 있습니다. 이미 가비지 수집 된 객체의 ID를 비교하지 않는 한 객체 의 메모리 주소를 항상 고유 한으로 반환합니다.

0

관심있는 모든 속성을 가져와 해시합니다.

class Car(...): 
    ... 
    def __hash__(self): 
    return hash((self.brand, self.model, self.price, self.year)) 

... 

print hash(x) 
0

Youre는 hash function에 대해 이야기합니다. 도움이 필요한 답변을 얻기 위해 필요한 정보에 대해 더 많은 정보를 제공해야한다고 생각합니다. 현재 사용중인

관련 문제