#python #list #function #class
Вопрос:
Я пытаюсь решить это упражнение. Мой желаемый результат-распечатать словарь со значениями; название «Trasa» и список каждой Варшавы 1 Варшава 2 и т. Д. Для этого я создал вторую функцию : stat_info
. Текущий выход: {'Name and information': ['Ko', lt;function station.stat_info at 0x7fe4dbbe3040gt;]}
Желаемый выход : {'Name and information': ['Ko',[Warszawa1, Warszawa 2 etc.]
Мой код:
class station: def __init__(self, name, possibility_of_change, time_of_stay): self.name = name self.possibility_of_change = possibility_of_change self.time_of_stay = time_of_stay stat = [] stat.append(self.name) self.stat = stat def stat_info(self): return self.stat class Position_of_route: def __init__(self, station, time_between_2_stays): self.station = station self.time_between_2_stays = time_between_2_stays class Route(station): def __init__(self, name1, list_of_positions): self.name1 = name1 self.list_of_postitions = list_of_positions def trasa_info(self): return 5 def generate(self, time): przystanki = [ station("Warszawa1",True,3), station("Warszawa2",True,5), station("Warszawa3",False,0), station("Warszawa4",True,3), station("Warszawa5",True,7), station("Warszawa6",True,3), station("Warszawa7",True,9), station("Warszawa8",False,0), station("Warszawa9",True,12), ] a={ "Name and information": [self.name1,station.stat_info] } return a print(Route("Ko",[1,2]).generate(18))
Ответ №1:
Вы не вызываете station.stat_info
функцию, а просто сохраняете ее ссылку. В любом случае, это метод класса, и вам нужно будет вызвать эквивалентный метод экземпляра, используя station
имеющиеся у вас экземпляры, которые хранятся в przystanki
списке. Например:
a = { "Name and information": [self.name1, [przystanek.stat_info() for przystanek in przystanki]] }
В этом примере вы получите список списков в соответствующем месте в вашей структуре данных:
{'Name and information': ['Ko', [['Warszawa1'], ['Warszawa2'], ['Warszawa3'], ['Warszawa4'], ['Warszawa5'], ['Warszawa6'], ['Warszawa7'], ['Warszawa8'], ['Warszawa9']]]}
Вопрос немного неоднозначен в отношении точного требуемого формата вывода, и код вызова может отличаться, если вы хотите объединить списки, например:
info = [] for przystanek in przystanki: info.extend(przystanek.stat_info()) a = { "Name and information": [self.name1, info] }
если бы вы хотели вместо этого иметь:
{'Name and information': ['Ko', ['Warszawa1', 'Warszawa2', 'Warszawa3', 'Warszawa4', 'Warszawa5', 'Warszawa6', 'Warszawa7', 'Warszawa8', 'Warszawa9']]}
но в любом случае вы будете вызывать эти методы экземпляра.
Примечание по именам переменных: przystanki
означает «станции» на польском языке, поэтому я выбрал przystanek
(что означает «станция» в единственном числе) для переменной цикла.
Комментарии:
1. @Kokin какую ошибку вы увидели? (Обратите внимание , что код, показанный здесь, нужно будет заменить существующим
a={ .... }
, с соответствующим отступом.)2. Тем временем я исправил имя пшистанки, и именно поэтому оно не работает. Извините, что потратили впустую ваше время, ваше решение было действительно сложным и отличным 🙂
3. @Kokin Хорошо, значит, теперь это работает на тебя?
4. Могу я спросить вас об одной вещи? Аналогичный вопрос, связанный с объектами. Могу я попросить вас связаться с нами?
5. @Kokin Если у вас есть еще один вопрос, пожалуйста, разместите его на этом сайте в качестве нового вопроса. Есть много других людей, которые могут помочь ответить на этот вопрос, если я сам его не вижу.