Вы можете добиться того же поведения, что и для hex и oct, переопределив / заменив встроенную функцию bin () своей собственной реализацией, которая пыталась вызвать bin для передаваемого объекта и отступила стандартная функция bin (), если объект не предоставил bin . Однако, исходя из того, что явное лучше, чем неявное, кодирование приложения в зависимости от пользовательской версии bin (), вероятно, не очень хорошая идея, поэтому, возможно, просто дайте функции другое имя, например
def mybin(n):
try:
return n.__bin__()
except AttributeError:
return bin(n)
Что касается несоответствия в интерфейсе, я не уверен. Может быть, это потому, что bin () был добавлен совсем недавно, поэтому это небольшой недосмотр?