Где использовать input в методе
У меня есть класс и в конструкторе есть пустой список. Мне нужно через метод класса добавить пустую строку, но с последующим использованием input
.
class Table:
def __init__(self, table):
self.table = []
def add_row(self, str_new):
self.table.append(str_new)
Куда вставлять input
?
Ответы (2 шт):
Зачем передаете параметр в __init__
, но его никак не используете? Убираем..
Зачем в add_row передавать что-то, если ожидаем вызов input
в методе? Убираем..
Получаем что-то такое:
class Table:
def __init__(self):
self.table = []
def add_row(self):
str_new = input()
self.table.append(str_new)
tb = Table()
tb.add_row()
print(tb.table)
Вывод:
Привет
['Привет']
[Program finished]
В методе лучше никак не использовать. Вводите снаружи, и передавайте в метод через параметр. Если вы прямо в метод вшиваете input
, то вы гвоздями прибиваете ваш класс к конкретно консольному способу ввода. А если вдруг вам нужно будет консольную программу переделать на GUI? Или просто из файла добавлять элементы — будете создавать отдельный метод для каждого способа добавления элемента?
У вас есть один универсальный метод добавления элемента, который можно использовать с любым способом ввода данных. Вшивать в сам метод один конкретный способ ввода не нужно - так теряется универсальность. Добавлять отдельные методы просто для ввода одной строки (допустим, через input
) - тоже не нужно, это просто излишне.
Хорошая идея в целом - не прятать ввод-вывод внутрь своих классов или функций, а оставлять снаружи, максимально видимым.
В общем, просто вызывайте input
снаружи, его результат передавайте в метод:
class Table:
def __init__(self):
self.table = []
def add_row(self,str_new):
self.table.append(str_new)
table = Table()
table.add_row(input())