我在代码中找不到错误。我正在使用ColHe类,它是Header类型的对象的集合,主要目标是读取文件的标题并获取包含它的元素的列表。
这是我的Header课程:
class Header:
def __init__(self, col):
self._day = 'Day:'
self._date = col[1]
self._time = 'Time:'
self._hours = col[3]
self._company = 'Company:'
self._name = 'NSHF'
def __str__(self):
return str(self._day + self._date + ", " + self._time + self._hours
+ ", " + self._company + self._name)
以及getter和setter的方法。这是我的ColHe
课程:
from collections import UserList
from copy import deepcopy
import constants
from Header import Header
class ColHe(UserList):
def __init__(self, file_name):
super().__init__()
in_file=open(file_name)
for i in range(constants.HEADER):
self.append(Header((in_file.readline().strip())))
in_file.close()
def getData(self):
return deepcopy(self)
def __str__(self):
st = ""
for he in self:
st+=str(he)
return st
其中constants.Header等于6。 我用以下方式运行程序:
a=ColHe("file.txt")
print(a.getData())
并将此作为输出:
Day:a, Time::, Company:NSHFDay:6, Time:1, Company:NSHFDay:i, Time:e, Company:NSHFDay:4, Time:5, Company:NSHFDay:o, Time:p, Company:NSHFDay:S, Time:F, Company:NSHF
然而,我正在寻找的输出看起来更像是这样:
["Day:", self._date, "Time:", self._time, "Company:", "NSHF"]
文件内容的一个例子是:
Day:
06:11:2017
Time:
14:55
Company:
NSHF
答案 0 :(得分:1)
当你在python中打印某些东西时,你不打印存储它的名称,你打印它的值。 IE:
print(self._date) # print whatever is stored in _date
print("self._date") # print the static string 'self._date'
没有合理的方式从您演示的输入中获得所需的输出。您误解了关于什么值,存储位置以及引用它们时会发生什么的核心概念。
答案 1 :(得分:0)
使用str.format(如果你的代码只是python 3.6+,则使用f-strings)
def __str__(self):
return 'Day:\n{self._day}\nTime:\n{self._time}\nCompany:\n{self._company}'.format(self=self)