W języku Python 2.6 (i wcześniejszych) funkcje wbudowane hex()
i oct()
mogą być przeciążone w klasie, definiując specjalne funkcje __hex__
i __oct__
. Jednak nie ma specjalnej funkcji __bin__
do przeciążania zachowania nowej wbudowanej funkcji Pythona 2.6, bin()
.Czy bin() może być przeciążony, podobnie jak oct() i hex() w Pythonie 2.6?
Chcę wiedzieć, czy istnieje jakikolwiek sposób elastycznego przeciążania bin()
, a jeśli nie, zastanawiałem się, dlaczego niespójny interfejs?
Wiem, że można użyć specjalnej funkcji __index__
, ale nie jest to elastyczne, ponieważ może zwracać tylko liczbę całkowitą. Moja szczególności przypadek użycia jest z modułu bitstring, gdzie wiodące zero bity są uznawane za znaczące:
>>> a = BitString(length=12) # Twelve zero bits
>>> hex(a)
'0x000'
>>> oct(a)
'0o0000'
>>> bin(a)
'0b0' <------ I want it to output '0b000000000000'
Podejrzewam, że nie ma sposobu, aby to osiągnąć, ale pomyślałem, że nie zaszkodzi się zapytać!
Dzięki, warto wiedzieć. Jednak udało mi się już uzyskać wynik w żądanej formie, po prostu nie mogłem odzyskać funkcji bin. Twoja metoda str.format jest znacznie bardziej zwięzła niż metoda, której użyłem! –
Zobacz także http://stackoverflow.com/questions/3258330/converting-from-hex-to-binary- bez-wybieranie-leading-s-python – endolith