Pythonリフレクションと型変換
-
05-07-2019 - |
質問
Pythonでは、通常、str()、int()、float()などの関数が型変換の実行に使用されます。ただし、これらは、開発時に変換するタイプを知る必要があります。私が記述しようとしているいくつかのPythonコードのサブ問題は次のとおりです。
2つの変数 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
の型にbarの変換方法を知っているコンストラクタがある場合にのみ機能します。
他のヒント
それが最適です:
type(foo)(bar)
type(foo)
は間違いなく最高です。型をチェックしたい場合は&type; quot;が最善の方法であり、私は python 2.7-3.2.2で、type()
は完全に動作します。
所属していません StackOverflow