파이썬 반사 및 유형 변환
-
05-07-2019 - |
문제
파이썬에서는 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()
완벽하게 작동합니다.
제휴하지 않습니다 StackOverflow