Come semplice esempio, assumere una metodo di utilità, che accetta un oggetto pitone input_obj
e out_type
, un pitone type
per convertire (typecast) l'oggetto inTrova su quali altri tipi di python può essere convertito un oggetto?
def convert_obj(input_obj,out_type):
-Esempi
convert_obj('2','int')
#returns 2
convert_obj([1,2,3],'tuple')
#returns (1,2,3)
L' il metodo supporta solo oggetti di tipi specifici come str, list, tuple e quindi verifica se è possibile convertirli in out_type specificato. Questo è libro delle regole presente nel metodo:
supported_conversions = {
tuple: [str, list, set],
str: [tuple, float, list, long, int, set],
float: [str, long, int],
list: [tuple, str, set],
long: [str, float, int],
dict: [tuple, str, list, set],
int: [str, float, long],
set: [tuple, str, list],
}
I tasti della supported_conversions
sono i tipi consentiti per input_obj.
Domanda: Oltre ad utilizzare try/tranne nel corso di un elenco di tutti i possibili tipi di Python per convertire un oggetto campione di ogni tipo, e poi vedere che cosa sono validi, per esempio controllando la conversione da str
a [lista, dict, tuple, int, tuple, set] c'è un modo migliore in python per generare il dict supported_conversions
, dato le sue chiavi?
Nota: l'altra eccezione per la conversione del tipo deve essere ignorata. ad esempio "1" può essere convertito in intero 1, ma "XYZ" non può essere. Ma questo ancora significa che str-> int è una conversione valida possibile.
* "c'è un modo migliore in python per generare il dict supported_conversions, date le sue chiavi?" * - Questo dipende assolutamente da come funziona quella funzione! Non sappiamo quale logica ci sia dietro che potrebbe consentire una conversazione o l'altra. – poke
@poke Digitare principalmente la conversione di un oggetto python in un altro tipo, quando è noto che in virtù dei suoi dati verrà convertito correttamente, ma la query è sapere quali tipi possibili possono essere convertiti in. – DhruvPathak
Ma * come * funziona la conversione del tipo? Posso facilmente pensare a un modo per convertire veramente * qualsiasi * tipo in * qualsiasi *. È l'algoritmo di conversione di tipo (ad esempio la funzione 'convert_obj') che decide esclusivamente su quale tipo di conversioni supporta. – poke