C/C++言語ライクな関数
PeterNorvig氏のPython IAQより・・・
他にも EnumやStructの簡単な実装が書かれてあった。
enumは、僕が昨日日記に書いたのとは別の方法だった。
簡単な例では、red,green,blue=range(3)から、
他の例ではクラスを使ってクラスの__dict__に直接読み込む方法まで。
class Enum: def __init__(self, *args, **keywords): self.__dict__(**keywords)
__dict__について調べていて解った事:
__dict__はクラスのメソッドに対応する名前と関数(FucntionType)
クラスを dir()して得られるのは、インスタンスメソッド(MethodType)
メソッドの方はオブジェクトを取り出しても、元のクラスのインスタンスを
作らないと呼び出せない。
import sys class ostream: def __init__(self, file): self.file = file def __lshift__(self, obj): self.file.write(str(obj)) return self cout = ostream(sys.stdout) cerr = ostream(sys.stderr) endl = '\n' def printf(format, *args): print str(format) % args, if __name__ == '__main__': cout << "Hello" << "World!" << endl printf("%d times\n", 10)