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.py
esempio mostra una classe che implementa ilImportReporter
interfaccia.)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
int
corrisponde a un numero intero compreso tra -2.147.483.648 e 2.147.483.647.Il tipo di dati
bool
corrisponde al tipo Pythonbool
(True
eFalse
).Il tipo di dati
string
corrisponde ai tipi Pythonstr
ounicode
, 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
T
il 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 aT
type significa che puoi usare ogni sequenza Python (generatori, liste, tuple, ecc.) che restituisceT
digitare valori (o una sottoclasse). Restituisce la sequenza di oggetti incompatibili e genera un'eccezione in fase di esecuzione.Il
IList<T>
interfaccia ad aT
type 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[] name
id per un parametro di tipoT
corrisponde al meccanismo Python*name
per 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à conname
come il nome eT
come il tipo. Seset;
manca, la proprietà è di sola lettura. In Python, il rispettivo costrutto è@property
decoratore.