Skip to main content

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 il ImportReporter 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 Python bool (True e False).

    Il tipo di dati string corrisponde ai tipi Python str o unicode, 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 da IBaseObject<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 da IExtendedObject<T>.

  • Il IEnumerable<T> interfaccia ad a T type significa che puoi usare ogni sequenza Python (generatori, liste, tuple, ecc.) che restituisce T digitare valori (o una sottoclasse). Restituisce la sequenza di oggetti incompatibili e genera un'eccezione in fase di esecuzione.

  • Il IList<T> interfaccia ad a T type identifica un elenco tipizzato che garantisce di includere solo elementi di tipo T (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 tipo T 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 tramite OnlineChangeOption.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à con name come il nome e T come il tipo. Se set; manca, la proprietà è di sola lettura. In Python, il rispettivo costrutto è @property decoratore.