2012-04-09 3 views
0

이것이 가능한지 나는 모른다.파이썬 내장 함수를 어떻게 바인드 할 수 있습니까?

내가 좋아하는 뭔가를하고 싶지 :

>>> foo = float 
>>> x = foo('2') 
>>> x 
2 

을하지만 그것을하려고 할 때 foo는의 형식 개체 수 :

>>> foo = float 
>>> foo 
<type 'int'> 

내가 올바른을 보유하고 객체와 같은 구조를 저장할을 파일에서 읽을 값을 변환 할 때 호출 할 함수입니다.

미리 도움을 청하십시오.

+0

매우 이상합니다. 방금 입력 했으므로 예상 결과가 나옵니다. (첫 번째 예제에서'x'는'2'가 아니라'2.0'이어야합니다.) – Taymon

+3

거의 확실하게 float가 int로 리바운드되기 때문입니다. – DSM

+0

@Taymon 감사합니다. 내가 뭘하고 있었는지 모르겠다. 너는 완전히 옳다. – pablete

답변

1

확실히 가능합니다. builtins의 식별자는 다른 식별자와 다르지 않으므로 동일한 식별자를 자신의 식별자에 바인딩 할 필요가 없습니다.

예상되는 결과를 얻지 못하면 실수로 다른 값으로 식별자를 리바운드하지 않았는지 확인하십시오.

-1

그냥 바인딩 할 수 있습니다. 그러나 기본 동작에 의존하는 다른 기능과 기능을 사용하여 기본 동작을 재정의하면 예기치 않게 중단되기 때문에 그렇게하는 것이 바람직하지 않습니다. 그렇게하지 마십시오!

>>> foo = float 
>>> bar = int 
>>> foo('2') 
2.0 
>>> bar('2') 
2 
>>> type(foo) 
<type 'type'> 
>>> type(bar) 
<type 'type'> 
>>> 
+2

당신은'foo = int'를 사용하는 것이 바람직하지 않다는 것을 좀 더 분명히해야합니다. (필자는 ...'optparse, argparse, ConfigParser'에서이 것이 확실하다고 생각합니다.) where where "유형"은 다양한 기능에 대한 인수로 전달됩니다. 그러나,'int = float'을하는 것은 확실히 나쁜 생각입니다. – mgilson

+0

-1 'float'의 기본 동작에 의존? OP는 행동을 바꾸지 않습니다. 그리고'foo'는 기본 동작을 가지고 있지 않습니다 ... –

+0

John Machin - 네, 알겠습니다. 미안, 혼란스러워! –

관련 문제