我当前的项目需要大量使用位字段。我找到了一个简单实用的位字段类的配方但它缺少一些我需要的功能,所以我决定扩展它。我刚刚要实施__str__
and __repr__
我想确保我遵守惯例。
__str__
应该是非正式和简洁的,所以我让它返回位字段的十进制值(即str(bit field 11)
将会"3"
.
__repr__
应该是该对象的官方表示,所以我让它返回实际的位字符串(即repr(bit field 11)
将会"11"
).
您认为这个实现是否符合以下约定:str
and repr
?
此外,我还使用了bin()
函数获取存储在类中的值的位串。这与 Python
Cheers,
Pete
The __repr__
最好是一个可用于重新创建对象的字符串,例如,如果您使用eval
关于它 - 请参阅文档here。这不是一门精确的科学,因为它可能取决于模块的用户如何导入它。
我会有__str__
返回二进制字符串,并且__repr__
return Classname(binary_string)
,或者任何可以用来重新创建对象的东西。
In the 位串模块(我维护)__str__
如果位串是 4 位长的倍数,则为十六进制,否则为二进制或两者的组合。此外,如果位串非常长,那么它会被截断(您不想尝试在交互式会话中打印 100 MB 的位串!)
我会避免使用bin()
如果我是你,就能完全发挥作用。原因是如果您的位串以零位开头,则无法使用它(请参阅我的问题here)。我建议使用bin
方法或属性代替。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)