在Python中子类化文件类引发NameError
我正在做一个非常简单的Python项目,目的是给内置的文件类添加错误检查。目前我已经写了:
class RobustFile(file):
def __init__(self,name,mode):
file.__init__(self,name,mode)
我刚开始学习,但为了确保我没有搞错,我运行了一下代码。结果一开始就出现了一个NameError,因为它不认识“file”这个名字。我尝试了一些调整,查了很多资料,还复制了一些格式相同的例子,但结果都是NameError。有没有人能帮我解释一下,怎么才能正确地继承文件类呢?
2 个回答
1
在 Python 2.6.6 中运行得很好:
In [44]: class RobustFile(file):
def __init__(self,name,mode):
file.__init__(self,name,mode)
....:
In [47]: fp = RobustFile('foo','w')
In [48]: fp.writelines('bar')
In [49]: fp.close()
7
你可能在使用Python 3,这个版本已经没有了file
这种类型。
相反,正如在Python 3文档的输入输出概述中提到的,它有几种不同的流类型,这些流类型都是从_io.TextIOBase
、_io.BufferedIOBase
或_io.RawIOBase
这几种基础类型派生出来的,而这些基础类型又是从_io.IOBase
派生的。