Buscar..


Usando ensamblados .Net desde el código de Python

Con IronPython puede acceder a cualquier ensamblaje .net que se compile utilizando la misma versión o una versión inferior a la del núcleo de IronPython.

Ejemplo: Importar un ensamblaje y una clase aa .net

from System import Math

Ejemplo: Usando una clase importada:

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

También puede cargar ensamblajes adicionales utilizando el módulo clr incorporado.

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

Simplemente utilícelo como cualquier otra biblioteca .net o python.

IronPython está escrito en c puro

IronPython está completamente escrito usando el código .net (c #) administrado. Por lo tanto, todos los métodos y bibliotecas de Python builtin (como next() , int() , etc.) están escritos en .net.

Este ejemplo muestra la implementación de len() para una lista de diferentes tipos (solo unos pocos):

....

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__();
}

....

Si necesitaríamos algún otro tipo para contar la longitud, solo agréguelos en Builtin.cs y estará disponible automáticamente.

Usando genéricos dentro de IronPython

IronPython permite utilizar clases y métodos genéricos desde el marco .net. Los genéricos se pueden utilizar con la misma sintaxis que para acceder a un índice. Para pasar más de un parámetro de tipo, se deben separar con una coma:

l = Dictionary[int, str]()

De esa manera creamos un diccionario donde las claves solo aceptan integers y los valores deben ser una string .

Un ejemplo de uso podría verse así

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

Salida

Hola

Mundo

Al agregar nuevos elementos, la verificación de tipos también se realizará:

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

Rastreo (llamadas recientes más última):

Archivo "<stdin>", línea 1, en

TypeError: esperado str, got int



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow