Szukaj…


Używanie zestawów .Net z kodu Python

Dzięki IronPython możesz uzyskać dostęp do dowolnego zestawu .net, który jest skompilowany przy użyciu tej samej lub niższej wersji niż rdzeń IronPython.

Przykład: importowanie zestawu i klasy .net

from System import Math

Przykład: użycie zaimportowanej klasy:

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

Możesz także załadować dodatkowe zespoły za pomocą wbudowanego modułu clr .

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

Niż po prostu użyj go jako innej biblioteki .net lub python.

IronPython jest napisany w czystym c #

IronPython jest całkowicie napisany przy użyciu zarządzanego kodu .net (c #). Tak więc wszystkie builtin metody i biblioteki Pythona (takie jak next() , int() itp.) Są zapisywane w .net.

Ten przykład pokazuje implementację len() dla listy różnych typów (tylko kilka):

....

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

....

Jeśli potrzebowalibyśmy innego typu, aby odliczyć długość, po prostu dodaj je w Builtin.cs a będzie ono dostępne automatycznie.

Używanie ogólnych w IronPython

IronPython umożliwia używanie klas ogólnych i metod z .NET. Ogólne mogą być używane z taką samą składnią jak dostęp do indeksu. Aby przekazać więcej niż jeden parametr typu, należy je rozdzielić przecinkiem:

l = Dictionary[int, str]()

W ten sposób tworzymy słownik, w którym klucze akceptują tylko integers a wartości muszą być string .

Przykładowe użycie może wyglądać tak

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

Wynik

Witaj

Świat

Podczas dodawania nowych elementów zostanie również wykonane sprawdzenie typu:

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

Traceback (ostatnie połączenie ostatnio):

Plik „<stdin>”, wiersz 1, w

TypeError: oczekiwany str, got int



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow