Suggerimenti per i programmatori Python sulla documentazione dell'API .NET
L'attuale versione preliminare della documentazione dell'interfaccia dello script è stata generata automaticamente dalle origini .NET e C# sottostanti. Pertanto, la documentazione include alcune espressioni che non sono familiari ai programmatori Python. La panoramica seguente fornisce alcuni suggerimenti su come queste espressioni possono essere comprese dal punto di vista di Python.
Un'interfaccia è il contratto che dice a un'istanza di una classe che implementa l'interfaccia quali membri (metodi, proprietà) deve preparare. In IronPython, puoi implementare una o più interfacce .NET in una classe ereditando da una superclasse. Se un metodo è necessario per l'interfaccia ma non è disponibile nella definizione della classe, viene generata un'eccezione. (Il
DeviceImportFromSvn.pyesempio mostra una classe che implementa ilImportReporterinterfaccia.)Ogni parametro e ogni metodo in .NET è rigorosamente tipizzato. Il tipo di parametro è separato da uno spazio prima del nome del parametro e il tipo di valore restituito da un metodo da uno spazio prima del nome del metodo. Puoi utilizzare le istanze delle sottoclassi quando definisci una classe (o un'interfaccia). Viene contrassegnato un metodo senza un valore restituito
void.Puoi sovraccaricare i metodi. Di conseguenza, in una classe possono esistere più metodi con lo stesso nome. Tuttavia, il numero oi tipi di parametri devono essere diversi. IronPython si occupa automaticamente dell'overloading del metodo più appropriato chiamato.
Il tipo di dati
intcorrisponde a un numero intero compreso tra -2.147.483.648 e 2.147.483.647.Il tipo di dati
boolcorrisponde al tipo Pythonbool(TrueeFalse).Il tipo di dati
stringcorrisponde ai tipi Pythonstrounicode, che sono identici in IronPython.Il
IDictionary<object, object>il tipo di dati corrisponde a un normale dizionario Python. IronPython converte automaticamente tra i tipi di dati Python e .NET.Quando un
Til tipo viene ereditato daIBaseObject<T>, significa che questo tipo può essere esteso da altri plug-in per membri aggiuntivi. L'utilizzo effettivo di questo tipo esteso come parametro o valore restituito è contrassegnato daIExtendedObject<T>.Il
IEnumerable<T>interfaccia ad aTtype significa che puoi usare ogni sequenza Python (generatori, liste, tuple, ecc.) che restituisceTdigitare valori (o una sottoclasse). Restituisce la sequenza di oggetti incompatibili e genera un'eccezione in fase di esecuzione.Il
IList<T>interfaccia ad aTtype identifica un elenco tipizzato che garantisce di includere solo elementi di tipoT(o una sottoclasse). Viene generata un'eccezione in fase di esecuzione quando viene effettuato un tentativo di aggiungere un oggetto incompatibile.Il
params T[] nameid per un parametro di tipoTcorrisponde al meccanismo Python*nameper elenchi di argomenti variabili.In Python, le enumerazioni (
enum) non esistono come costrutti linguistici. Il suo scopo è definire un numero esatto di valori costanti per uno scopo specifico, ad esempio i giorni della settimana. L'accesso alle enumerazioni .NET da IronPython funziona utilizzando "Name.Member", ad esempio tramiteOnlineChangeOption.Try.Esistono anche diversi approcci per emulare le enumerazioni in Python.
Ad esempio, vedere: http://pypi.python.org/pypi/enum/
La sintassi
T name{ get; set; }definisce una proprietà connamecome il nome eTcome il tipo. Seset;manca, la proprietà è di sola lettura. In Python, il rispettivo costrutto è@propertydecoratore.