Python 2.6(およびそれ以前)のhex()
とoct()
組み込み関数は、__hex__
と__oct__
特殊関数を定義することで、クラス内でオーバーロードすることができます。しかし、Python 2.6の新しいbin()
組み込み関数の動作を過負荷にする特別な関数は__bin__
ではありません。Python 2.6ではbin()をoct()やhex()のようにオーバーロードできますか?
bin()
を柔軟にオーバーロードする方法があるかどうかを知りたいのですが、そうでない場合は、矛盾したインターフェイスが不思議でしたか?
私は、__index__
特殊関数を使用できることは知っていますが、これは整数だけを返すことができるので柔軟性がありません。私の特定のユースケースは、ゼロ・ビットが重要と考えられている行送りbitstringモジュールからである:
>>> a = BitString(length=12) # Twelve zero bits
>>> hex(a)
'0x000'
>>> oct(a)
'0o0000'
>>> bin(a)
'0b0' <------ I want it to output '0b000000000000'
私はこれを達成する方法はありませんと思われるが、私はそれを聞いてて損はないだろうと思いました!
ありがとう、それは知っていると便利です。私はすでに私が望んだ形で出力を得ることができたが、私はbin関数を返すことができなかった。あなたのstr.formatメソッドは、私が使ったメソッドよりもかなり簡潔です! –
も参照してくださいhttp://stackoverflow.com/questions/3258330/converting-from-hex-to-binary-without-losing-leading-0s-python – endolith