문제

파이썬에서는 str (), int (), float () 등과 같은 함수는 일반적으로 유형 변환을 수행하는 데 사용됩니다. 그러나 개발 시간에 어떤 유형을 변환 할 것인지 알아야합니다. 내가 쓰려고하는 일부 파이썬 코드의 하위 판결은 다음과 같습니다.

두 가지 변수가 주어지면 foo 그리고 bar, 유형을 찾으십시오 foo. (이것은 일반적인 코드이므로 개발 시간에 알려지지 않았습니다.) 그런 다음 변환을 시도하십시오. bar 모든 유형에 foo 이다. 이 작업을 수행 할 수 없다면 예외를 던지십시오.

예를 들어,이 작업을 수행하는 함수를 호출한다고 가정 해 봅시다. conv. 그 서명은 모양이 될 것입니다

def conv(foo, bar) :
    # Do stuff.

그것은 다음과 같은 것을 불러 낼 것입니다.

result = conv(3.14, "2.718")  # result is now 2.718, as a float.
도움이 되었습니까?

해결책

사용 foo.__class__ 유형을 얻으려면 foo. 그런 다음 Bar를 foo 유형으로 변환하도록 호출하십시오.

def conv(foo, bar) :
    return foo.__class__(bar)

물론 이것은 유형의 경우에만 작동합니다. foo 막대를 변환하는 방법을 알고있는 생성자가 있습니다.

다른 팁

그게 가장 좋을 것입니다 :

type(foo)(bar)
type(foo)

유형을 확인하려면 "유형"이 가장 좋은 방법이며, 나는 켜져 있습니다. python 2.7 - 3.2.2, type() 완벽하게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top