Не вызывается метод внутри экземпляра класса в Python 3.7
Не удается получить доступ к методу read_file() внутри экземпляра
класса в Python 3.7. Требуется напечатать список list_values_end при помощи
функции print_file(). При вызове функции print_file() терминал
выдает <__main__.ReadFile object at 0x0082EA70> вместо ожидаемого списка.
Поясните, пожалуйста, что сделано не так? Код прилагается.
class ReadFile():
def __init__(self):
self.file_r = 'val_kWt.txt'
self.read_file(self.file_r)
self.print_file(self)
def read_file(self, file_r):
list_values_end = []
vk = open(file_r, 'r')
list_values = vk.readlines()
for list_value in list_values:
list_values_end.append(list_value.rstrip())
vk.close()
print(list_values_end)
return list_values_end
def print_file(self, list_values_end):
print(list_values_end)
examp = ReadFile()
Ответы (1 шт):
Всё вызывается. Нужно просто понимать, что return не только возвращает значение, но и завершает выполнение метода.
Поэтому когда вы пишите
return list_values_end
print(list_values_end)
то до print исполнение кода просто не дойдёт.
UPD: Ответ на исправленный вопрос:
Вы же в функцию вывода передаёте сам экземпляр класса. А надо передавать тот список, который хотите напечатать.
Вместо
self.read_file(self.file_r)
self.print_file(self)
Сделайте
result = self.read_file(self.file_r)
self.print_file(result)