在Python 2.6(及更早版本)中,通过定义__hex__
和__oct__
特殊功能,可以在一个类中重载内置函数hex()
和oct()
。但是,没有一个特殊的函数来重载Python 2.6的新内置函数bin()
的行为。可以在Python 2.6中像bin()和hex()那样重载bin()吗?
我想知道是否有任何方式灵活超载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方法比我用的方法简洁得多! – 2009-06-18 12:53:44