如何检查物体是否可腌制
我有要腌制的各种类型的对象的列表。我只想腌制那些可腌制的。除了尝试腌制对象外,是否有标准的方法来检查对象是否属于可腌制类型?
该文档说,如果发生了酸洗异常,那么可能已经在将某些字节写入文件后就已经发生了,因此尝试对对象进行酸洗作为测试似乎不是一个好的解决方案。
-
在这种情况下,我会建议进行 鸭子 测试。尝试将其放入合适的临时文件或内存文件中,如果失败,则丢弃结果,如果重新命名成功,则将其丢弃。
为什么?
在python中,您可以通过两种方式检查对象是否具有某些属性。
检查object是否是某些Abstract Base
Class的实例。例如:Number
“数字层次结构的根。如果只想检查参数x是否为数字,而又不关心哪种类型,请使用isinstance(x,Number)。”或者尝试一下,然后处理异常。这在许多情况下都会发生。蟒蛇哲学以 鸭子 为基础。关键字包括
鸭子输入 ,
鸭子测试 和
EAFP 。我什至认为在社区的压力下,第一个已经正确地引入了python3,而许多人仍然坚信 鸭子 是python的发展之路。
AFAIK没有特殊的先决条件可以检查,
ABC
如果有酸洗,也不能检查任何对象。所以剩下的就是 鸭子 。也许可以尝试其他方法,但是不值得。很难对对象进行手动自省以初步了解其是否适合酸洗。