Вопрос

В 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 () работает отлично.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top