IronPython
C#の場合、多重継承はインタフェースを使うことになりますが、実装クラスへの委譲を書くのがちょっと面倒です。一方、Pythonは実装の多重継承ができるのでこれを利用して委譲の手書きを手抜きできないか試してみました。まずは、多重継承させるインタフェー…
コンストラクタ/プロパティインジェクションを実験君。
ExcelのApplication.Visibleプロパティの設定ですが、α6では app.Visible = True と書けたはずですが、α7では、 app.set_Visible(True) としないとExcelが表示されなくなった気がします。なんでだろ・・・
http://d.hatena.ne.jp/akiramei/20071026/1193419839 ↑with_statementを使ったネタがIronPythonのメーリングリストに取り上げられて、 http://lists.ironpython.com/pipermail/users-ironpython.com/2007-October/005856.html これに対するレスが、 There w…
IronPython2.0でwithが使えないと思っていたのですが、実は対話型コンソールだとダメでファイルから実行する分にはOKでした。 http://d.hatena.ne.jp/akiramei/20070929/1191045521 ↑ってことで、これをwithを使って書き直してみます。 from __future__ impo…
http://d.hatena.ne.jp/akiramei/20071024/1193248138 昨日の続き。折角なのでRuby.NET、CPython、IronPythonについても計測してみました。 Ruby.NET β0.8.1 : 72s Python2.5.1 : 2.14s IronPython2.0α4 : 1.25s Ruby.NETだけ飛びぬけて遅いですね。メモリ使…
Pythonクックブックを読みながら、IronPythonで色々お試し。 import clr from System import Convert,IConvertible for c in 'Hello': print c.GetType(), ord(c) """ System.String 72 System.String 101 System.String 108 System.String 108 System.Strin…
COMオブジェクトを使う場合、Marshal.ReleaseComObjectを呼びまくることになるのが苦痛です。 http://www.python.org/doc/2.5/whatsnew/pep-343.html#SECTION000910000000000000000 http://www.python.org/doc/2.5/lib/module-contextlib.html このあたりを…
じっくり調べたら単にオブジェクトが解放されていないだけという良くある話でした。参考までに動作するサンプルをあげておきます。画像ファイルをExcel2007のワークブックに変換するスクリプト。 import sys import clr clr.AddReference('System.Drawing') …
実は、こっちが本題。ちょっとしたお遊びツールをIronPythonで書いていたらメモリ不足エラーが発生し、調査してみたところ、 import clr clr.AddReference('Microsoft.Office.Interop.Excel') from Microsoft.Office.Interop import Excel app = Excel.Appli…
ちまちまIronPython2.0αのソースを読み始めました。大ざっぱに分けるとPythonコードをPythonAstに変換するParser(とTokenizer)、PythonAstからAst.CodeBlock(IronPython名前空間からMicorosoft.Scripting名前空間)への変換、ILへの変換、実行ってな感じ。IL…
IronPythonからPython2.4付属のurllibを使うと例外が発生するので、 FePyを入手。ただし、これに含まれるIronPythonのバージョンは1.1aと古いです。なので、最新のIronPythonのsite.pyに sys.path.append(r"C:\IPCE-r5\Lib") とか書いてライブラリだけを使わ…
IronPythonの世界 (Windows Script Programming)作者: 荒井省三出版社/メーカー: ソフトバンク クリエイティブ発売日: 2007/03/28メディア: 単行本購入: 4人 クリック: 31回この商品を含むブログ (21件) を見るPython本もあまりないのに、IronPython本が。(^…
リフレクションを使えばメタプログラミングが出来ますが、ちょっと面倒です。たとえば、以前やったネタですが、 http://d.hatena.ne.jp/akiramei/20050612/p1 インタフェースの委譲を自動化するだけなのに結構なコード量になっています。リフレクションをや…
ここ最近、MonoでS2.NETを動かそうと色々やってきましたが、やっと出来ました。結局、S2.NETのソースコードを書き換えてしまいました。(^^;
http://d.hatena.ne.jp/Kazzz/20060724/p2より return this.engine.Evaluate("eval(exp)", this.engine.DefaultModule, ctx); ここのevalはなくても良さそうです。 engine.Execute("from System import *"); DateTime t = engine.EvaluateAs<DateTime>("DateTime.Now")</datetime>…
Python チュートリアル 悲しいことに国内だとPythonはかなりマイナーな部類です。.NET以前はPythonに嵌っていたのでIronPythonでPythonに興味を持つ人が増えればいいなぁっと。私がPythonを覚えたときは、このチュートリアル(当時はバージョンが違いましたが…
http://d.hatena.ne.jp/akiramei/20060723/p3の続き。最初に知っておかないといけないことは、IronPythonのクラス(型)が.NET上では型として認識されないということです。IronPythonのクラスはメンバーとしてDictionaryを持っていて、その中にプロパティやら…
http://d.hatena.ne.jp/akiramei/20060702/p1 上記のサンプルはS2.NETを使っていますが、これをIronPythonを使って書き換えてみます。
PythonプログラマがIronPythonを始める場合、.NET経験者なことはほとんどないと思うので簡単なサンプルを用意してみました。
IronPython側から.NETのクラスライブラリを呼び出す例は見ましたので、C#からIronPythonを使ってみます。
日記で何度かふれたことがありますが、IronPythonのクラスは.NETで言うところの型ではなく、IronPython独自のクラスになっています(恐らくPython同様の実装)。