为仅与特定类相关的对象添加额外属性的最佳实践

时间:2013-11-14 20:24:18

标签: python oop

我有以下课程:

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

我有一个包含玩家的class(Lobby)。 该类应该为每个玩家提供额外的属性。 例如,idle时间:

class Lobby(object):
    def __init__(self, players):
        self.players = players
        for player in players:
            player.idle = 0

我有另一个class(Game) 这个类应该为每个玩家提供额外的属性。例如,team属性

class Game(object):
    def __init__(self, players):
        self.players = players
        self.organize_teams();

    def organize_teams(self):
        for player in self.players:
            if condition1:
                player.team = 0
            elif condition2:
                player.team = 1
            elif condition3:
                player.team = 2

问题是玩家的额外属性只与特定类有关。 所以我想到了另一种方法。

例如,Lobby类:

class Lobby(object):
    def __init__(self, players):
        self.players = {}
        for player in players:
            self.players[player] = {idle: 0}

这是一个好习惯吗?

1 个答案:

答案 0 :(得分:0)

如果我说得对,您希望为每个Player实例存储值,但这些值应由Game的实例管理。因此Game的不同实例可以为某个Player设置不同的值。在这种情况下,您只需要Player和值之间的映射。那只是dict。所以我建议你在Lobby中展示的解决方案。