0

我编写了一个 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>
4

1 回答 1

2

不幸的是,从文档中我不清楚如何将新属性、方法和子类分配给文件的内置类型。

专业提示:你没有。(在某些情况下,您可以考虑修改内置文件类型,但这对于您当前的问题来说太过分了)

查看您示例的最后一部分,似乎我们可以丢弃您的 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>

Wherecheck_conditions检查包含在 SrcFile 类中的条件并convert_record为 Record 行生成输出。

于 2012-06-20T13:37:31.150 回答