Question

En Python, des fonctions telles que str (), int (), float (), etc. sont généralement utilisées pour effectuer des conversions de types. Cependant, pour pouvoir convertir ces types, vous devez savoir au moment du développement. Un sous-problème de code Python que je tente d’écrire est le suivant:

Étant donné deux variables, foo et bar , recherchez le type de foo . (On ne le sait pas au moment du développement, car il s'agit d'un code générique.) Ensuite, tentez de convertir la barre en un type foo . Si cela ne peut pas être fait, lancez une exception.

Par exemple, appelez la fonction qui fait cela conv . Sa signature ressemblerait à

def conv(foo, bar) :
    # Do stuff.

Cela s'appellerait quelque chose comme:

result = conv(3.14, "2.718")  # result is now 2.718, as a float.
Était-ce utile?

La solution

Utilisez foo .__ class __ pour obtenir le type de foo . Puis appelez-le pour convertir bar en type de foo:

def conv(foo, bar) :
    return foo.__class__(bar)

Bien sûr, cela ne fonctionne que si le type de foo a un constructeur qui sait convertir un bar.

Autres conseils

ce serait mieux:

type(foo)(bar)
type(foo)

est sans aucun doute le meilleur. Si vous souhaitez vérifier un type, choisissez "type". est la meilleure méthode, et je suis sur python 2.7 - 3.2.2, type () fonctionne parfaitement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top