Проблема с контейнером Python, возвращающаяся к main () - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь прочитать простой текстовый файл и получить вывод в базовом формате строки.У меня есть родительский класс и дочерний класс.Я начну с создания экземпляра дочернего класса, который должен наследовать структуру данных от родительского класса (это все, что он содержит).При разборе входного файла дочерний класс должен вводить строки в список, созданный при создании экземпляра дочернего класса строка за строкой.Я не могу понять, как получить вывод, вызванный из main()

Я пытался regex для разбора групп в списке, но это, кажется, не имеет значения или помощи.Я также попытался вызвать функцию вывода в конце функции 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...