Dans Python 2.6 (et versions antérieures), les fonctions intégrées hex()
et oct()
peuvent être surchargées dans une classe en définissant les fonctions spéciales __hex__
et __oct__
. Cependant, il n'y a pas de fonction spéciale __bin__
pour surcharger le comportement de la nouvelle fonction intégrée bin()
de Python 2.6.Can bin() peut être surchargé comme oct() et hex() dans Python 2.6?
Je veux savoir s'il y a un moyen de surcharger de manière flexible bin()
, et sinon je me demandais pourquoi l'interface incohérente?
Je sais que la fonction spéciale __index__
peut être utilisée, mais ce n'est pas flexible car elle ne peut renvoyer qu'un nombre entier. Mon cas particulier d'utilisation est à partir du module bitstring, où zéro bits sont considérés comme significatifs:
>>> a = BitString(length=12) # Twelve zero bits
>>> hex(a)
'0x000'
>>> oct(a)
'0o0000'
>>> bin(a)
'0b0' <------ I want it to output '0b000000000000'
Je pense qu'il n'y a pas moyen d'y parvenir, mais je pensais que ce ne serait pas de mal à demander!
Merci, c'est utile à savoir. J'ai déjà réussi à obtenir la sortie dans la forme que je voulais, je ne pouvais tout simplement pas obtenir la fonction bin pour me le renvoyer. Votre méthode str.format est considérablement plus concise que la méthode que j'ai utilisée! –
Voir aussi http://stackoverflow.com/questions/3258330/converting-from-hex-to-binary-without-losing-leading-0s-python – endolith