Отражение Python и преобразование типов
-
05-07-2019 - |
Вопрос
В Python для преобразования типов обычно используются такие функции, как str (), int (), float () и т. д. Однако они требуют, чтобы вы знали во время разработки, какой тип вы хотите преобразовать в. Подзадача некоторого кода Python, который я пытаюсь написать, выглядит следующим образом:
Учитывая две переменные, 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)
определенно лучше, если вы хотите проверить тип, тогда " тип " это лучший метод, и я нахожусь на python 2.7 - 3.2.2, type ()
работает отлично.