Python のクラス変数とインスタンス変数の危ない関係

Python でクラス変数を書き換えると生成済みのインスタンス変数にビックリな影響を与えることを知ったので、それについて書き留めておきます。使ったのは Python 3.5 です。

class Sandwich:
    ham = 0

メンバに変数 ham を持つ Sandwitch クラスを用意しました。このクラスのインスタンスを生成します。

>>> sw = Sandwich()
>>> sw.ham # インスタンス変数
0

当然、インスタンス変数は初期化された値が入ります。ではクラス変数を別の値に書き換えるとどうなると思いますか?

>>> Sandwich.ham = 1 # クラス変数に別の値を代入

そうすると…

Continue reading →

WiFi NFC App を公開しました

tap-to-connect

WiFi 接続設定を NFC でやりとりする規格を Wi-Fi Alliance が策定していて、一部の Android スマートフォンでは既に何のアプリもインストールせず、かざすだけで WiFi 接続設定が終わるんですよ。わたしこれに感動しまして、ついては iPhone でもぜひほしいと思った次第です。で、作っちゃいましたので要点をまとめます。
Continue reading →

NextEPCを使ってEPCを構築する(ビルド編)

弊社は、「研究開発ITサービス」を行っているため、様々な実験システムに触れる機会があります。
その1つに、他社製のEPCとeNodeBが使用されているシステムがあり、このEPCではOpenEPCというソフトウェアが採用されていました。

OpenEPCの調査を続けているうちに、github上でソースコードが公開されているNextEPCというプロジェクトの存在を知り、各ノード間のインタフェースが堅持されているのであれば、もしかしたら比較的単純にNextEPCに置き換えられるのではないかと思い始めました。
そこで、既存システムのEPCをNextEPCに置き換えるべく悪戦苦闘したので、その内容を残しておきます。

Continue reading →