返回到main()的Python容器问题

时间:2019-04-23 22:38:07

标签: python containers

我正在尝试读取一个简单的文本文件,并以基本行格式获取输出。我有一个父母班和一个孩子班。我从实例化子类开始,该子类应该从父类继承数据结构(包含的全部内容)。解析输入文件时,子类应将这些行输入到在逐行实例化子类的情况下建立的列表中。我无法弄清楚如何从main()

调用输出

我已经尝试过使用正则表达式将组解析到列表中,但似乎没有任何帮助。我还尝试在add()函数末尾调用输出函数。当我检查输出函数时,列表或对象都没有定义。

输入,以单个空格分隔

    E031 HR+ 301d
    E005 HR+ 263d
    E036 HR+ 415d
    E043 HR+ 68d
    E003 HR+ 133d
    E044 HR+ 323d
    E047 HR+ 117d
    E037 HER2+ 14d
    E048 TNBC 27d
    E049 TNBC 148d
    E046 TNBC 269d
    E015 TNBC 0d

main.py

    import data

    def main():
        #declare ObservationSet object
        entry = data.ObservationSet()
        entry.loadFile("input.txt")

        entry.output()

    if __name__ == '__main__':
        main()

data.py

    #class dfn & constructor

    class Observation:
        def __init__(self, patientNum = None, marker = None, timeLapse = None):
            self.patientNum = patientNum
            self.marker = marker
            self.timeLapse = timeLapse




    #class dfn & constructor
    class ObservationSet():

        def __init__(self, observations=None):
            self.observations = observations

            #establish list for multiple observations
            if self.observations is None:
                self.observations = list()

                #isa list here -- print(type(self.observations))

        #load file to process lines function

        def loadFile(self, fileName):
            for line in open(fileName):
                #line = line.rstrip()    
                #add here to Observation object            
            for patient in line:
                observation = Observation(patient)
                self.add(observation)

        #append to observations list next line of observations
        def add(self, observation):
            self.observations.append(observation)

        def output(self):
           #no  idea

我真正想看到的是使用.format()

这样的东西

患者编号:E031 BioMarker:HR +分子与临床复发之间的时间间隔:301天

*****编辑 首先,我希望缩进更清晰 其次,我错了。容器是正确的,不是继承。我回去看看是否可以解决。到目前为止,我删除了明显的继承行。但是我不确定使ObsSet成为Obs容器的代码。

*****编辑2 我尝试了此修改:

    for patient in line:
            observation = Observation(patient)
            self.add(observation)

这:

    def output(self):
        for obs in self.observations:
        print(obs)

在输出函数中,obs是对象,而不是数据本身。而且,如果我引用self.observations,则会得到未定义的全局名称错误。也就是说,obs是一个data.Observation对象。

0 个答案:

没有答案