组织Python对象以进行检索

时间:2010-03-16 07:27:07

标签: python

我有一个Club班级和一个Player班级。玩家类具有属性Fav.clubs,其具有唯一的俱乐部值。因此用户应该输入各种俱乐部名称。根据俱乐部名称,我必须检索这些俱乐部对象并建立这个特定球员的关系Fav.clubs

Fav.clubs类中的属性Player应存储Club的名称。现在我要做的是,从用户那里获取关于Fav.clubs(列表)的输入。之后遍历列表中的每个元素并访问字符串名称以查找相应的club对象,然后将该对象实例存储在Player类中。

2 个答案:

答案 0 :(得分:1)

将所有分会存放在名为all_clubs的词典中。关键应该是俱乐部名称和俱乐部对象本身的价值。然后你可以all_clubs[clubname]来检索给定名字的俱乐部对象。

播放器可能有一个属性club_names,它是您描述的唯一名称列表,属性clubs可能如下所示:

class Player(object):
    # ...

    @property
    def clubs(self):
        result = []
        for name in self.club_names:
            result.append(all_clubs.get(name))
        return result

或者,使用像sqlalchemy这样的ORM工具和简单的基于文件或内存的sqlite数据库也可能是个好主意。然后你就拥有了SQL的强大功能和极好的关系映射。但是如果你是Python的新手,我不会使用类似的东西,因为sqlalchemy是一个相当复杂的主题,并且映射在后台使用了一些python魔法,你可能在开始时就不会理解。因此,我建议采用第一种方法。

答案 1 :(得分:0)

使用dict在字符串和Club

的实例之间存储地图
clubmap = {
  'basketball': Club("Basketball club"),
  'chess': Club("Chess club"),
}

someplayer.joinclub(clubmap['basketball'])