Поиск…


Использование .Net-сборок из кода Python

С IronPython вы можете получить доступ к любой сборке .net, которая скомпилирована с использованием той же или более низкой версии, что и ядро ​​IronPython.

Пример: импорт сборки и класса aa .net

from System import Math

Пример. Использование импортированного класса:

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

Вы также можете загрузить дополнительные сборки, используя встроенный модуль clr .

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

Вместо этого используйте его как любую другую .net или библиотеку python.

IronPython написан в чистом c #

IronPython полностью написан с использованием управляемого .net (c #) кода. Таким образом, все builtin методы и библиотеки python (такие как next() , int() и т. Д.) Записываются в .net.

В этом примере показана реализация len() для списка разных типов (всего несколько):

....

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

....

Если нам понадобится какой-то другой тип для подсчета длины, просто добавьте их в Builtin.cs и он будет доступен автоматически.

Использование дженериков в IronPython

IronPython позволяет использовать общие классы и методы из .NET Framework. Дженерики могут использоваться с тем же синтаксисом, что и доступ к индексу. Для передачи нескольких параметров типа они должны быть разделены запятой:

l = Dictionary[int, str]()

Таким образом, мы создаем словарь, в котором ключи принимают только integers а значения должны быть string .

Пример использования может выглядеть так:

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

Выход

Привет

Мир

При добавлении новых элементов также будет проверяться тип:

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

Traceback (последний последний вызов):

Файл «<stdin>», строка 1, в

TypeError: expected str, got int



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow