我将从python 2.7移植到python 3.3.2。在python 2.7中,我曾经能够执行类似于assert(type(something) == file)的操作,但在python 3.3.2中,这似乎是错误的。如何在Python3.3.2中执行类似的操作?

最佳答案

python 3文件对象是该模块中的io module测试的一部分:

from io import IOBase

if isinstance(someobj, IOBase):

不要在python 2中使用type(obj) == file,而是使用isinstance(obj, file)。即使这样,您也希望测试功能;ioabcs允许您做的事情;ABC classes将为实现抽象基类定义的所有方法的任何对象返回isinstance()
演示:
>>> from io import IOBase
>>> fh = open('/tmp/demo', 'w')
>>> isinstance(fh, IOBase)
True
>>> isinstance(object(), IOBase)
False

10-06 07:21
查看更多