особо понимаю в чём проблема
class OurGuest():
def __init__(self, manyg = 0, filename = "", guest = []):
# self.guest = guest
self.manyg = manyg
self.filename = filename
self.guest = guest
def guests(self):
guest = []
for i in range(self.manyg):
guest.append(input("Введите имя гостя: "))
def file1(self):
with open(self.filename, "w") as file:
for i in self.guest:
file.write(i)
def attempt(self):
self.guests()
self.file1()
my_test = OurGuest(3, "testo.txt")
my_test.attempt()
А список в аргументах по умолчанию - плохо же?
Не знаю. Это намёк или вопрос?
Мутабельный аргумент плохо
ааа, допёр. У меня guest по итогу пустым становится и поэтому ничего не записывает
спасибо) сейчас решать буду
Кстати, а почему ты guest'ов добавляешь в локальный список guest для метода guests? После того как ты ввел всех guest'ов, происходит выход из скоупа функции(метода) и этого списка более не существует
Ты должен их записывать в self.guest
Да, я уже нашёл ошибку. Спасибо 🤗
Еще убери дефолтное значение у guest. Можешь убрать guest из сигнатуры вообще, и в ините сделать self.guest = []
а чем это плохо? только из-за того, что guest не получает никаких параметров, а manyg и filename получают?
Дефолтные значения ни чем не плохи. А вот дефолтные изменяемые значения - плохи Вот почему def foo(arg=[]): arg.append(1) print(arg) foo() foo() foo() > [1] [1, 1] [1, 1, 1]
а, понял. Спасибо Остальное лучше оставить или убрать? Остальное вроде не изменяется
да остальное норм
Понял, спасибоэ
Так все логично же. Сколько дернул, столько апенд и отработал
Только это крайне редко является ожидаемым поведением :)))
Обсуждают сегодня