Sök…


Använda .Net-enheter från Python-kod

Med IronPython kan du komma åt alla .net-enheter som kompileras med samma eller en lägre version än IronPython-kärnan.

Exempel: Importera aa .net-montering och klass

from System import Math

Exempel: Använda en importerad klass:

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

Du kan också ladda ytterligare enheter genom att använda den inbyggda clr modulen.

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

Använd bara det som något annat .net- eller pythonbibliotek.

IronPython är skriven i ren c #

IronPython skrivs fullständigt med hanterad .net (c #) -kod. Så alla builtin pythonmetoder och bibliotek (som next() , int() , etc.) skrivs in i .net.

Detta exempel visar implementeringen av len() för en lista över olika typer (endast några få):

....

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

....

Om vi skulle behöva någon annan typ för att räkna längden, lägg bara till dem i Builtin.cs så kommer den att vara tillgänglig automatiskt.

Använda generik inom IronPython

IronPython gör det möjligt att använda generiska klasser och metoder från .net-ramverket. Generics kan användas med samma syntax som åtkomst till ett index. För att skicka mer än en typparameter måste de separeras med komma:

l = Dictionary[int, str]()

På så sätt skapar vi en ordlista där tangenter bara accepterar integers och värdena måste vara en string .

En exempelanvändning kan se ut så här

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

Produktion

Hej

Värld

När du lägger till nya objekt kommer typkontroll också att utföras:

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

Traceback (senaste samtalet senast):

Fil "<stdin>", rad 1, in

TypeError: förväntat str, fick int



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow