我将从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)
。即使这样,您也希望测试功能;io
abcs允许您做的事情;ABC classes将为实现抽象基类定义的所有方法的任何对象返回isinstance()
。演示:
>>> from io import IOBase
>>> fh = open('/tmp/demo', 'w')
>>> isinstance(fh, IOBase)
True
>>> isinstance(object(), IOBase)
False