字节和字节数组的超类



我正在制作一个函数,它将接受Unicode字符串或字节(或字节数组)对象。我想确保只有那些类型通过。我知道我可以通过做isinstance(x, str)来检查某个东西是否是字符串,我也知道我可以写isinstance(x, bytes) or isinstance(x, bytearray)

是否有更简洁的方法来检查后者,即是否存在bytesbytearray都派生自的类?

除了object:之外,没有通用基类

>>> bytearray.__base__
<class 'object'>
>>> bytes.__base__
<class 'object'>

不要检查类型。让用户传递她想要的任何类型的参数。如果该类型没有所需的接口,那么代码无论如何都会失败。

您可以使用:

isinstance(x, (bytes, bytearray))

但是,鸭子类型可能很有用,所以其他不是从字节或字节数组派生,而是实现正确方法的类型可以传递给函数。

接受Unicode字符串是没有意义的,因为它们在任何情况下都不是二进制数据。我可能会接受任何类型的序列,如果该序列中的任何项不是0到255之间的整数(您可能会在压缩过程中发现),则会引发错误。

如果您想支持Python 2,还需要接受字符串作为特殊情况,因为这是Python 2的二进制类型。

相关内容

  • 没有找到相关文章

最新更新