2015-05-03 3 views
0

Я опишу это в том, что я как бы новичок в Python, и я беру свой первый удар при написании класса. Я бы хотел, чтобы класс открыл одну из группы текстовых файлов на основе ввода пользователем. Текстовые файлы содержат такую ​​информацию:Поиск 2D-массива в классе Python 2.7

20,21,22 
23,24,25 
26,27,28 

Текстовый файл считывается как 2D-массив. Значение считывается из этого массива и присваивается новой переменной, поэтому переменная может быть напечатана, а также использована позже в расчете. Я смог сделать это без труда за пределами класса, но заставить его работать в классе было неприятно. Вот код, который я до сих пор для Python 2.7:

im_new = [] 

class Read(object): 
    def __init__(self, agev, table, row, col, newvar): 
     self.agevar = agev 
     self.table = table 
     self.row = row 
     self.col = col 
     self.newvar = newvar 

     display_list = [] 


     with open(self.table + str(self.agevar) + ".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]) 

immem = Read(40, "im", 1, 2, im_new) 


print "Immediate Memory: " % im_new 

В идеале, ссылки на текстовый файл, например, результат будет «Немедленное Память: 25», но на выходе я получаю «Немедленная память:» и когда Я печатаю значение im_new в консоли, я получаю «[]». Я уверен, что это очень очевидно, что мне не хватает. Любая помощь будет оценена по достоинству. Заранее спасибо.

+0

Я не совсем понимаю ваш вопрос, но попробую 'print 'Немедленная память:«% immem.newvar' –

+0

Спасибо за вашу помощь. Я внес изменения в код, который вы предложили, но не пошел с выходом. Я согласен, что, возможно, я не объяснил, что я делаю хорошо. Я пересмотрю свой вопрос и код и отправлю. Я ценю вашу попытку. – credenzamatic

ответ

0

С кодом что-то не так, оно также не запускается. Я попытался исправить:

im_new = [] 

class Read(object): 
    def __init__(self, agev, table, row, col, newvar): 
     self.agevar = agev 
     self.table = table 
     self.row = row 
     self.col = col 
     self.newvar = newvar 

     self.display_list = [] 


     with open(self.table + str(self.agevar) + ".txt", "r") as data_file: 
      for line in data_file: 
       self.display_list.append(line.strip().split(',')) 

    def __str__(self): 
     self.newvar = (self.display_list[self.row][self.col]) 
     return self.newvar 

immem = Read(40, "im", 1, 2, im_new) 


print "Immediate Memory: ", immem 

Immediate Memory: 25 Это возвращает, как вы ожидали, но я не уверен, что это то, что вы хотите.

0

Это потому, что вы назначаете класс чтения к immem переменной, а не im_new переменной. Вам необходимо напечатать immem вместо im_new.

Смежные вопросы