Czy bin () może być przeciążony, jak oct () i hex () w Pythonie 2.6?

W Pythonie 2.6 (i wcześniejszym)hex() ioct() wbudowane funkcje mogą być przeciążone w klasie poprzez zdefiniowanie__hex__ i__oct__ funkcje specjalne. Nie ma jednak__bin__ specjalna funkcja do przeciążania zachowania nowego Pythona 2.6bin() wbudowana funkcja.

Chcę wiedzieć, czy istnieje jakiś sposób elastycznego przeładowaniabin(), a jeśli nie, zastanawiałem się, dlaczego niespójny interfejs?

Wiem, że__index__ można użyć funkcji specjalnej, ale nie jest to elastyczne, ponieważ może zwrócić tylko liczbę całkowitą. Mój szczególny przypadek użycia pochodzi złańcuch bitów moduł, w którym wiodące bity zerowe są uważane za znaczące:

<code>>>> a = BitString(length=12)       # Twelve zero bits
>>> hex(a)
'0x000'
>>> oct(a)
'0o0000'
>>> bin(a)
'0b0' <------ I want it to output '0b000000000000'
</code>

Podejrzewam, że nie ma sposobu, aby to osiągnąć, ale pomyślałem, że nie zaszkodzi zapytać!

questionAnswers(4)

yourAnswerToTheQuestion