Ricerca…


Usando gli assembly .Net dal codice Python

Con IronPython puoi accedere a qualsiasi assembly .net che viene compilato utilizzando la stessa versione o una versione precedente rispetto al core IronPython.

Esempio: importazione di un assembly .net e classe

from System import Math

Esempio: utilizzo di una classe importata:

from System import Math
print Math.Abs(-123)

È anche possibile caricare ulteriori assiemi utilizzando il modulo clr incorporato.

import clr
clr.AddReference('Sample') # Sample.dll inside of the working directory.

Quindi basta usarlo come qualsiasi altra libreria .net o python.

IronPython è scritto in puro C #

IronPython è scritto completamente usando il codice gestito .net (c #). Così tutti i builtin metodi Python e le librerie (come next() , int() , ecc) sono writtin in .NET.

Questo esempio mostra l'implementazione di len() per un elenco di tipi diversi (solo alcuni):

....

public static int len([NotNull]List/*!*/ list) {
    return list.__len__();
}

public static int len([NotNull]PythonTuple/*!*/ tuple) {
    return tuple.__len__();
}

public static int len([NotNull]PythonDictionary/*!*/ dict) {
    return dict.__len__();
}

....

Se avessimo bisogno di qualche altro tipo per contare la durata, aggiungili in Builtin.cs e sarà disponibile automaticamente.

Usare i generici in IronPython

IronPython consente di utilizzare classi e metodi generici dal framework .net. Generics può essere utilizzato con la stessa sintassi dell'accesso a un indice. Per passare più di un parametro di tipo, devono essere separati da una virgola:

l = Dictionary[int, str]()

In questo modo creiamo un dizionario in cui le chiavi accettano solo integers e i valori devono essere una string .

Un esempio di utilizzo potrebbe essere simile a questo

from System.Collections.Generic import List
lst = List[str]()
lst.Add('Hello')
lst.Add('World')
for l in lst:
    print

Produzione

Ciao

Mondo

Quando si aggiungono nuovi articoli, verrà eseguito anche il controllo del tipo:

lst = List[str]()
lst.Add(123)

Traceback (ultima chiamata più recente):

File "<stdin>", riga 1, in

TypeError: atteso str, ottenuto int



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow