如何访问类外的列表?

2024-05-17 05:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我用Place类生成了一堆Place,然后在Player类中,我试图创建一个方法,通过我向西旅行的places列表查看当前位置并查看连接的位置,但是由于我很新,OOP,我不确定如何将Player函数的访问权授予main()中创建的列表

def main():
    import random

    places = []
    places.append(Place("Boston", "Sunny - 55°F", ("Worcester", None), "645,966", "Marty Walsh"))
    places.append(Place("Worcester", "Sunny - 64°F", ("Springfield", "Boston"), "182,544", "Joseph Petty"))
    places.append(Place("Springfield", "Sunny - 67°F", ("Pittsfield", "Worcester"), "153,703", "Domenic Sarno"))
    places.append(Place("Pittsfield", "Sunny - 63°F", (None, "Springfield"), "44,057", "Linda Tyer"))

这也是在main()中生成播放器的地方:

^{pr2}$

以下是Place类构造函数:

class Place(object):
    def __init__(self, name, weather, cl, pop, mayor):
        self.name = name
        self.weather = weather
        self.connectedLocation = cl
        self.population = pop
        self.mayor = mayor

以下是Player类构造函数:

class Player(object):
    def __init__(self, name, curLoc):
        self.name = name
        self.curLoc = curLoc

后来在Player类中,我试图使这个方法无效,因为令我沮丧的是,类不能访问main()中创建的位置列表

def goWest(self):
    for place in places:
        if self.curLoc.connectedLocation[0] == place.name:
            self.curLoc = place

Tags: nameself列表maindefplaceplayerweather
1条回答
网友
1楼 · 发布于 2024-05-17 05:04:14

您需要通过添加places参数将places列表传递给goWest函数。它看起来像这样:

def go_west(self, places):
    for place in places:
        if self.cur_loc.connected_location[0] == place.name:
            self.cur_loc = place
            break

我添加break语句是因为我假设一旦找到了当前位置,就不需要继续迭代列表。在

相关问题 更多 >