2013-12-08 22 views

risposta

3

Python è un linguaggio tipizzato dinamicamente, quindi non ha bisogno di generici. Si può fare qualcosa di simile

def addTen(inputData): 
    if isinstance(inputData, int): 
     return inputData + 10 
    elif isinstance(inputData, str): 
     return int(inputData) + 10 
    else: 
     return 10 

È possibile passare qualsiasi tipo di dati da qualsiasi funzione e che funzione può decidere di trattare diversi tipi di dati in modo diverso.

+0

Nel momento in cui hai scritto questa risposta non c'era il modulo 'typing'. Comunque in questo momento è una parte della libreria standard (da Python 3.5). – nme

14

No. Python non è un linguaggio tipizzato staticamente, quindi non è necessario. I generici Java forniscono solo la sicurezza del tipo a tempo di compilazione; non fanno nulla in fase di runtime. Python non ha alcun tipo di sicurezza in fase di compilazione, quindi non avrebbe senso aggiungere generici per rinforzare i controlli del tipo a tempo di compilazione che Python non ha.

Un elenco, ad esempio, è una raccolta non tipizzata. Non esiste un equivalente di distinzione tra List<Integer> e List<String> poiché un elenco Python può memorizzare qualsiasi tipo di oggetto.

+1

Aggiornamento su questo dato che si tratta di un top post - https://www.python.org/dev/peps/pep-0484/#generics – Juxhin

+4

Python non è tipizzato in modo statico ma il tipo di suggerimento per i metodi dei membri può essere tipizzato staticamente. Quindi c'è bisogno di loro. – tribbloid