python中类似对象吗_在Python中确定对象是否是类似字节的对象的正确方法是什么?...

这里有几种方法可以使用.

鸭打字

由于Python是duck typed,您可以简单地做如下(这似乎是通常建议的方式):

try:

data = data.decode()

except AttributeError:

pass

但是,您可以使用hasattr,但是可能会很好.这当然是假定给定对象的.decode()方法返回一个字符串,并且没有讨厌的副作用.

我个人建议使用异常或者是hasattr方法,不管你使用什么都取决于你.

使用str()

这种方法是不常见的,但是有可能:

data = str(data, "utf-8")

其他编码是允许的,就像缓冲协议的.decode()一样.您还可以传递第三个参数来指定错误处理.

单分派通用函数(Python 3.4)

Python 3.4及以上版本包括一个名为单调派通用函数的漂亮功能,通过functools.singledispatch.这有点更详细,但也更为明确:

def func(data):

# This is the generic implementation

data = data.decode()

...

@func.register(str)

def _(data):

# data will already be a string

...

如果你这样选择,你也可以为bytearray和bytes对象制作特殊的处理程序.

当心:单一调度功能只适用于第一个参数!这是一个有意图的功能,见PEP 433.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值