Suche…


.Net-Assemblys aus Python-Code verwenden

Mit IronPython können Sie auf jede .net-Assembly zugreifen, die mit derselben oder einer niedrigeren Version als der IronPython-Kern kompiliert wird.

Beispiel: Importieren einer .net-Assembly und einer Klasse

from System import Math

Beispiel: Verwenden einer importierten Klasse:

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

Sie können auch zusätzliche Baugruppen laden, indem Sie das integrierte clr Modul verwenden.

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

Dann verwenden Sie es einfach wie jede andere .net- oder Python-Bibliothek.

IronPython ist in reinem c # geschrieben

IronPython wird vollständig mit verwaltetem .net (c #) Code geschrieben. Daher werden alle builtin Python-Methoden und -Bibliotheken (wie next() , int() usw.) in .net geschrieben.

Dieses Beispiel zeigt die Implementierung von len() für eine Liste verschiedener Typen (nur einige):

....

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

....

Wenn wir einen anderen Typ zum Abzählen der Länge benötigen, fügen Sie sie einfach in Builtin.cs und sie wird automatisch verfügbar sein.

Verwendung von Generika in IronPython

IronPython ermöglicht die Verwendung generischer Klassen und Methoden aus dem .NET-Framework. Generics können mit derselben Syntax wie der Zugriff auf einen Index verwendet werden. Um mehrere Typparameter übergeben zu können, müssen sie mit einem Komma getrennt werden:

l = Dictionary[int, str]()

Auf diese Weise erstellen wir ein Wörterbuch, in dem Schlüssel nur integers akzeptieren und die Werte eine string .

Eine Beispielnutzung könnte so aussehen

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

Ausgabe

Hallo

Welt

Beim Hinzufügen neuer Elemente wird auch die Typüberprüfung durchgeführt:

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

Traceback (letzter Anruf zuletzt):

Datei "<stdin>", Zeile 1, in

TypeError: erwartete str, wurde int



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow