Python文件对象的新类和内置类型:我是不是想错了?

Python文件对象的新类和内置类型:我是不是想错了?,python,class,object,Python,Class,Object,我已经编写了一个Python脚本,用于以几种不同的方式合并许多数据文件。这是我的第一个Python脚本,实际上是我第一次尝试OOP,我怀疑我一直在以一种功能性的方式思考对象和类,但不是最优的 我为源文件创建了一个类,为源文件中的记录行创建了一个子类。现在,随着我对Python中的一切都是对象的新理解,我怀疑我通过为文件创建一个类创造了不必要的复杂性,而内置类型不仅存在,而且每次打开文件时我都已经在使用它 不幸的是,从文档中我不清楚如何为文件的内置类型分配新的属性、方法和子类。我也不明白文件数据类

我已经编写了一个Python脚本,用于以几种不同的方式合并许多数据文件。这是我的第一个Python脚本,实际上是我第一次尝试OOP,我怀疑我一直在以一种功能性的方式思考对象和类,但不是最优的

我为源文件创建了一个类,为源文件中的记录行创建了一个子类。现在,随着我对Python中的一切都是对象的新理解,我怀疑我通过为文件创建一个类创造了不必要的复杂性,而内置类型不仅存在,而且每次打开文件时我都已经在使用它

不幸的是,从文档中我不清楚如何为文件的内置类型分配新的属性、方法和子类。我也不明白文件数据类型如何与类不同;我只是将两者理解为创建具有特定属性的对象的“工厂”

class SrcFile:
   self.name = which  
   self.terminals = set([])

def <a few methods>():
   with open(self.name) as file:
      <do some stuff and return something>

class Record(SrcFile):
      <methods>

for file in files:
   file = SrcFile(file)
   if <conditions on values from SrcFile methods>:
      with open(file) as file:
         for line in file:
            if <regexp match>:
               record = Record(line)
               <apply Record() methods>
               <write to tempfiles>

<merge tempfiles to stdout>
class文件:
self.name=which
self.terminals=set([])
def():
打开(self.name)作为文件:
类记录(SRC文件):
对于文件中的文件:
file=SrcFile(文件)
如果:
打开(文件)作为文件:
对于文件中的行:
如果:
记录=记录(行)
不幸的是,从文档中我不清楚如何为文件的内置类型分配新的属性、方法和子类

专业提示:你不需要。 (可能有些情况下,您可以考虑修补内置文件类型,但这对于您当前的问题来说将是多余的)

看一下示例的最后一部分,我们似乎可以扔掉您的Record和SrcFile类,然后像这样重写它:

def check_conditions(file):
    #return true if SrcFile conditions are met

def convert_record(line):
    #generate the string you want to print for the record

for file in files:
    if check_conditions(file):
        with open(file) as file:
            for line in file:
                if <regexp match>:
                    record = convert_record(line)
                    <write to tempfiles>
def检查_条件(文件):
#如果满足SrcFile条件,则返回true
def convert_记录(行):
#生成要为记录打印的字符串
对于文件中的文件:
如果检查条件(文件):
打开(文件)作为文件:
对于文件中的行:
如果:
记录=转换记录(行)

其中,
check\u conditions
检查SrcFile类中包含的条件,并
convert\u record
生成记录行的输出。

伪代码片段很难理解。1.你的压痕破了。请把它修好。2.在
SrcFile
中有类级别的方法代码。请将其移动到methid中(可能是
\uuuu init\uuuu()
)。嗯,不确定我们能否以有用的方式讨论此设计。你对自己真正想要达到的目标相当模糊。讨论设计通常需要对项目有详细的了解。@SvenMarnach-我同意。我现在奇怪地想塞德。或者使用fileinput模块。任何半正式的Python教程,包括,都会解释如何使用类和实例。