2012-04-09 6 views
0

これが可能かどうかわかりません。ビルドされたPython関数をどのようにバインドできますか?

私のような何かをしたい:

>>> 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

確かに可能です。組み込み関数の識別子は他の識別子と変わらず、同じオブジェクトに独自の識別子をバインドすることはできません。

期待どおりの結果が得られない場合は、誤って識別子を他の値にリバウンドしていないことを確認してください。

-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'で行われていると思います...) "type"は引数としてさまざまな関数に渡されます。しかし、 'int = float'を実行することは間違いです。 – mgilson

+0

-1 'float'のデフォルトの動作に依存していますか? OPは行動を変えていない。そして 'foo'はデフォルトの振る舞いを持っていません... –

+0

John Machin - そうです、それを見ます。申し訳ありませんが、混乱しました! –

関連する問題