IronPython

IronPythonを使った多重継承

C#の場合、多重継承はインタフェースを使うことになりますが、実装クラスへの委譲を書くのがちょっと面倒です。一方、Pythonは実装の多重継承ができるのでこれを利用して委譲の手書きを手抜きできないか試してみました。まずは、多重継承させるインタフェー…

Unityその2

コンストラクタ/プロパティインジェクションを実験君。

プロパティの設定

ExcelのApplication.Visibleプロパティの設定ですが、α6では app.Visible = True と書けたはずですが、α7では、 app.set_Visible(True) としないとExcelが表示されなくなった気がします。なんでだろ・・・

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…

with statement

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だけ飛びぬけて遅いですね。メモリ使…

文字列を1文字ずつ処理する

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 このあたりを…

Excel操作その後

じっくり調べたら単にオブジェクトが解放されていないだけという良くある話でした。参考までに動作するサンプルをあげておきます。画像ファイルをExcel2007のワークブックに変換するスクリプト。 import sys import clr clr.AddReference('System.Drawing') …

Excel操作

実は、こっちが本題。ちょっとしたお遊びツールをIronPythonで書いていたらメモリ不足エラーが発生し、調査してみたところ、 import clr clr.AddReference('Microsoft.Office.Interop.Excel') from Microsoft.Office.Interop import Excel app = Excel.Appli…

ソース探索その1

ちまちまIronPython2.0αのソースを読み始めました。大ざっぱに分けるとPythonコードをPythonAstに変換するParser(とTokenizer)、PythonAstからAst.CodeBlock(IronPython名前空間からMicorosoft.Scripting名前空間)への変換、ILへの変換、実行ってな感じ。IL…

BeautifulSoupを使う

IronPythonからPython2.4付属のurllibを使うと例外が発生するので、 FePyを入手。ただし、これに含まれるIronPythonのバージョンは1.1aと古いです。なので、最新のIronPythonのsite.pyに sys.path.append(r"C:\IPCE-r5\Lib") とか書いてライブラリだけを使わ…

IronPython本

IronPythonの世界 (Windows Script Programming)作者: 荒井省三出版社/メーカー: ソフトバンク クリエイティブ発売日: 2007/03/28メディア: 単行本購入: 4人 クリック: 31回この商品を含むブログ (21件) を見るPython本もあまりないのに、IronPython本が。(^…

メタプログラミングツールとしてのIronPython

リフレクションを使えばメタプログラミングが出来ますが、ちょっと面倒です。たとえば、以前やったネタですが、 http://d.hatena.ne.jp/akiramei/20050612/p1 インタフェースの委譲を自動化するだけなのに結構なコード量になっています。リフレクションをや…

MonoでSeasar.NETを動かす

ここ最近、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 チュートリアル 悲しいことに国内だとPythonはかなりマイナーな部類です。.NET以前はPythonに嵌っていたのでIronPythonでPythonに興味を持つ人が増えればいいなぁっと。私がPythonを覚えたときは、このチュートリアル(当時はバージョンが違いましたが…

IronPythonでAOPモドキ

http://d.hatena.ne.jp/akiramei/20060723/p3の続き。最初に知っておかないといけないことは、IronPythonのクラス(型)が.NET上では型として認識されないということです。IronPythonのクラスはメンバーとしてDictionaryを持っていて、その中にプロパティやら…

IronPythonでDIモドキ

http://d.hatena.ne.jp/akiramei/20060702/p1 上記のサンプルはS2.NETを使っていますが、これをIronPythonを使って書き換えてみます。

IronPythonからADO.NETを使うサンプル

PythonプログラマがIronPythonを始める場合、.NET経験者なことはほとんどないと思うので簡単なサンプルを用意してみました。

IronPythonのホスティング

IronPython側から.NETのクラスライブラリを呼び出す例は見ましたので、C#からIronPythonを使ってみます。

.NETクラスからの継承

日記で何度かふれたことがありますが、IronPythonのクラスは.NETで言うところの型ではなく、IronPython独自のクラスになっています(恐らくPython同様の実装)。