サーチ…


Pythonコードから.Netアセンブリを使用する

IronPythonでは、IronPythonコアと同じかそれより低いバージョンでコンパイルされた.netアセンブリにアクセスできます。

例: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フレームワークの汎用クラスとメソッドを使用できます。ジェネリックスは、インデックスへのアクセスと同じ構文で使用できます。複数の型パラメータを渡す場合は、カンマで区切る必要があります。

l = Dictionary[int, str]()

そうすれば、キーはintegersだけを受け付け、値はstringなければならない辞書を作成し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)

トレースバック(直近の最後のコール):

ファイル "<stdin>"、1行目、

TypeError:予想されるstr、int



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow