__repr__
предпочтительно должна быть строкой, которая может использоваться для воссоздания объекта, например, если вы используете eval
для него - см. Документы здесь . Это не точная наука, поскольку она может зависеть, например, от того, как пользователь вашего модуля импортировал ее.
Я бы попросил __str__
вернуть двоичную строку, а __repr__
вернуть Classname(binary_string)
или что-то еще, что можно использовать для воссоздания объекта.
В модуле цепочка битов (который я поддерживаю) __str__
является шестнадцатеричным, если цепочка битов кратна длине 4 бита, в противном случае она является либо двоичной, либо комбинацией двух. Также, если цепочка битов очень длинная, она усекается (вы не хотите пытаться распечатать цепочку битов 100 МБ в интерактивном сеансе!)
Я бы вообще не использовал функцию bin()
на вашем месте. Причина в том, что его нельзя использовать, если ваша цепочка битов начинается с нуля (см. Мой вопрос здесь ). Я бы посоветовал использовать вместо этого bin
метод или свойство.