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