Python容器问题,引用main()

2024-09-30 08:19:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试读取一个简单的文本文件,并获得基本行格式的输出。我有一个父类和一个子类。我首先实例化子类,它应该从父类继承数据结构(这就是它所包含的全部内容)。在解析输入文件时,子类应该将行输入到子类逐行实例化后建立的列表中。我不知道如何获得从main()调用的输出

我曾尝试过regex将组解析到列表中,但似乎没有什么不同或帮助。我还尝试在add()函数的末尾调用output函数。当我检查输出函数时,列表和对象都没有定义。你知道吗

输入,由单个空格分隔

    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

你知道吗主.py你知道吗

    import data

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

        entry.output()

    if __name__ == '__main__':
        main()

你知道吗数据.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生物标志物:HR+分子和临床复发之间的时间间隔:301天

******编辑 首先,我希望压痕更清晰 其次,我错了。容器是正确的,不是继承。我回去看看能不能修好。到目前为止,我删除了明显的inherit行。但我不确定的代码使ObsSet为Obs的容器。你知道吗

******编辑2 我尝试了以下编辑:

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

还有这个:

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

在输出函数中,obs是一个对象,而不是数据本身。如果我接受推荐信自我观察,我得到一个全局名称未定义错误。也就是说,obs是一个数据。观察对象。你知道吗


Tags: 函数selfnoneaddforoutputmaindef

热门问题