Zoeken…


.Net-assemblages gebruiken vanuit Python-code

Met IronPython hebt u toegang tot elke .net-assemblage die is samengesteld met dezelfde of een lagere versie dan de IronPython-kern.

Voorbeeld: aa .net-assembly en -klasse importeren

from System import Math

Voorbeeld: een geïmporteerde klasse gebruiken:

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

U kunt ook extra merken laden met behulp van de ingebouwde clr module.

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

Gebruik hem dan gewoon als elke andere .net- of pythonbibliotheek.

IronPython is geschreven in pure c #

IronPython is volledig geschreven met beheerde .net (c #) code. Dus alle builtin python-methoden en bibliotheken (zoals next() , int() , etc.) zijn writtin in .net.

Dit voorbeeld toont de implementatie van len() voor een lijst met verschillende typen (slechts enkele):

....

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

....

Als we een ander type nodig hebben om de lengte af te tellen, voegt u ze gewoon toe in Builtin.cs en het zal automatisch beschikbaar zijn.

Generics gebruiken binnen IronPython

Met IronPython kunnen generieke klassen en methoden uit het .net-framework worden gebruikt. Generics kunnen worden gebruikt met dezelfde syntaxis als toegang tot een index. Als u meer dan één typeparameter wilt doorgeven, moeten ze worden gescheiden door een komma:

l = Dictionary[int, str]()

Op die manier maken we een woordenboek waarin sleutels alleen integers accepteert en de waarden een string moeten zijn.

Een voorbeeldgebruik kan er zo uitzien

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

uitgang

Hallo

Wereld

Bij het toevoegen van nieuwe items wordt ook typecontrole uitgevoerd:

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

Hertraceren (meest recente oproep als laatste)

Bestand "<stdin>", regel 1, in

TypeError: verwachte str, kreeg int



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow