【问题标题】:Object programming issue对象编程问题
【发布时间】:2022-01-08 11:45:23
【问题描述】:

我正在尝试解决这个问题。我想要的输出是用值打印字典; “Trasa”的名称和每个 Warszawa1 Warszawa 2 等的列表。为此,我创建了第二个函数:stat_info。当前输出:{'Name and information': ['Ko', <function station.stat_info at 0x7fe4dbbe3040>]} 所需输出:{'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))

【问题讨论】:

    标签: python list function class


    【解决方案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(意思是“站”单数)。

    【讨论】:

    • @Kokin 你看到了什么错误? (请注意,此处显示的代码需要替换您现有的a={ .... },并适当缩进。)
    • 同时,我更正了 przystanki 的名称,这就是它不起作用的原因。很抱歉浪费您的时间,您的解决方案真的很棘手而且很棒:)
    • @Kokin 好的,现在对你有用吗?
    • 我能问你一件事吗?类似的问题,与对象有关。可以问一下联系方式吗?
    • @Kokin 如果您还有其他问题,请将其作为新问题发布到此站点。如果我自己没有看到,还有很多其他人可以帮助回答。
    猜你喜欢
    • 2022-01-16
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2022-01-20
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多