我正在从 Python 2.7 移植到 Python 3.3.2。在 Python 2.7 中,我曾经能够做类似的事情assert(type(something) == file)
,但在 Python 3.3.2 中似乎这是错误的。我如何在 Python 3.3.2 中做类似的事情?
问问题
13624 次
1 回答
28
Python 3 文件对象是模块的一部分,针对该io
模块中的ABC 类进行测试:
from io import IOBase
if isinstance(someobj, IOBase):
不要type(obj) == file
在 Python 2 中使用;你会isinstance(obj, file)
改用。即使这样,您也想测试这些功能;io
ABC让你做的事情;该isinstance()
函数True
将为实现抽象基类定义的所有方法的任何对象返回。
演示:
>>> from io import IOBase
>>> fh = open('/tmp/demo', 'w')
>>> isinstance(fh, IOBase)
True
>>> isinstance(object(), IOBase)
False
于 2013-09-18T19:44:25.507 回答