Jav*_*ier 7 python byte python-3.x
我正在创建一个接受Unicode字符串或字节(或bytearray)对象的函数.我想确保只传递那些类型.我知道我可以通过这样做检查是否有字符串isinstance(x, str),我知道我可以写isinstance(x, bytes) or isinstance(x, bytearray).
有没有更简洁的方法来检查后者,即是否有一个类,从哪个bytes和bytearray派生?
除了以下内容之外没有共同的基类object:
>>> bytearray.__base__
<class 'object'>
>>> bytes.__base__
<class 'object'>
Run Code Online (Sandbox Code Playgroud)
不要检查类型.让用户传递她想要的任何类型的参数.如果类型没有所需的接口,则代码将无论如何都会失败.
您可以使用:
isinstance(x, (bytes, bytearray))
Run Code Online (Sandbox Code Playgroud)
但是,鸭子类型可能很有用,因此其他类型不是从字节或字节数组派生的,但实现了正确的方法可以传递给函数。