在Python中子类化文件类引发NameError

0 投票
2 回答
1057 浏览
提问于 2025-04-16 05:27

我正在做一个非常简单的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派生的。

撰写回答