超类的字节和bytearray?

Jav*_*ier 7 python byte python-3.x

我正在创建一个接受Unicode字符串或字节(或bytearray)对象的函数.我想确保只传递那些类型.我知道我可以通过这样做检查是否有字符串isinstance(x, str),我知道我可以写isinstance(x, bytes) or isinstance(x, bytearray).

有没有更简洁的方法来检查后者,即是否有一个类,从哪个bytesbytearray派生?

Sve*_*ach 7

除了以下内容之外没有共同的基类object:

>>> bytearray.__base__
<class 'object'>
>>> bytes.__base__
<class 'object'>
Run Code Online (Sandbox Code Playgroud)

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


Jas*_*ijn 6

您可以使用:

isinstance(x, (bytes, bytearray))
Run Code Online (Sandbox Code Playgroud)

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