我将构建这一事实,因为我是Python的新手,我正在第一次学习写作课程。我想要实现的是让类打开一个文本文件并根据用户输入从文件中返回一个值。文本文件包含2D数组中的信息,如下所示:
20,21,22
23,24,25
26,27,28
从该文本文件中检索该值并将其分配给新变量,以便可以打印该变量并在以后的计算中使用。我已经能够在课堂上毫无困难地完成这项任务,但是让它在课堂上工作一直令人沮丧。这是我到目前为止在Python 2.7中的代码:
im_new = []
class Read(object):
def __init__(self, row, col, newvar):
self.row = row
self.col = col
self.newvar = newvar
display_list = []
self.newvar = []
with open("Array.txt", "r") as data_file:
for line in data_file:
display_list.append(line.strip().split(','))
def __str__(self):
self.newvar = (display_list[self.row][self.col])
return self.newvar
immem = Read( 1, 1, im_new)
print "OUTPUT: ", im_new
理想情况下,我会得到“OUTPUT:24”,但我会得到“OUTPUT:[]”。我不确定我做错了什么。任何帮助将不胜感激。
答案 0 :(得分:2)
首先,您要混合两个变量。 im_new
是一个空列表; immem
是Read
个实例。将最后一行更改为print 'OUTPUT:', immem
。
解决问题后,您会遇到另一个问题:NameError
display_list
。这是因为您忘记了self.
上的display_list
,但是使用了__init__
方法和__str__
方法。 (我假设您知道self.
的含义,因为您可以正确地使用它来处理所有其他属性。)
作为旁注,每次获得对象的self.newvar
时,覆盖__str__
都会有点奇怪。这个属性确实没有理由存在,至少在你所展示的代码中是这样。所以你可以这样做:
class Read(object):
def __init__(self, row, col):
self.row = row
self.col = col
self.display_list = []
with open("Array.txt", "r") as data_file:
for line in data_file:
self.display_list.append(line.strip().split(','))
def __str__(self):
return self.display_list[self.row][self.col]
immem = Read(1, 1)