2013-11-14 4 views
1

관련 개체에 대한 추가 속성을 추가합니다 : 모범 사례 단지 내가 다음과 같은 클래스가 특정 클래스

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 

문제 플레이어의 추가 속성은 오직 특정 클래스에 관한 것입니다 때문이다. 그래서 다른 방법으로 생각했습니다. 예를 들어

, 로비 클래스 : 그것은 좋은 연습

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

인가?

+0

플레이어의 팀 또는 팀의 플레이어가 필요합니까? 즉, 팀 구성을 게임에 추가 할 수 있습니다. 다른 게임 플레이어는 다른 팀에 속할 수 있습니다. – alko

+0

플레이어에 특성을 추가하고 싶지 않습니다. 특성이 특정 게임에만 관련되기 때문입니다. (한 번에 여러 게임이있을 수 있습니다). '팀 '에 대해서,'int' ('player.team = 0')로 사용하지 않았습니다. 그저 하나의 예입니다. 나는 팀을 위해'enum'을 가지고있다. – Nirock

+0

상황이 게임에서 게임으로 바뀌면 Factory 스타일의 디자인 패턴을 사용하여 플레이어 생성을 설정하는 것이 좋습니다. –

답변

0

맞다면 Player 인스턴스 당 값을 저장하려고하지만이 값은 Game 인스턴스로 관리해야합니다. 따라서 Game의 다른 인스턴스는 특정 Player에 대해 다른 값을 가질 수 있습니다. 이 경우 Player과 값 사이의 매핑이 필요합니다. 그것은 단지 dict입니다. 그래서 나는 Lobby에 나와있는 해결책을 제안 할 것입니다.

+0

정확히 그 의미. – Nirock

관련 문제