2017-04-25 82 views
0

我正在嘗試爲幾個朋友創建一個足球比賽程序。我目前有一個類來實例化團隊,我正在編寫匹配實例化類。如何涉及來自不同類的兩個實例,python 2

我目前擁有的是:

class Team(object): 
     def __init__(self, name, games=0, points=0, goals=0, wins=0, loses=0): 
    self.name  = name 
    self.points = points 
    self.games = games 
    self.goals = goals 
    self.wins  = wins 
    self.loses = loses 

    def win(self): 
    self.points += 3 
    self.wins += 1 
    self.games += 1 

    def lose(self): 
    self.points += 1 
    self.loses += 1 
    self.games += 1 

    def ratio(self): 
    print "(Wins/Loses/Games)\n ", self.wins, "/", self.loses, "/", self.games 

class Match(object): 
    def __init__(self, teamagoals, teambgoals): 
    self.teamagoals = teamagoals 
    self.teambgoals = teambgoals 

    def playgame(teama, teamb): 
    #conditional statements which will decide who wins 

alpha = Team("George's Team") 
beta = Team("Josh's Team") 
gamma = Team("Fred's Team") 

在這一點上我碰到如何去這樣做的問題。按照我的問題,我試圖在Match()類中涉及團隊類的兩個實例。例如,我想在Match()中調用一個函數,並指定團隊Alpha和團隊Gamma相互對抗,然後在他們贏或輸時修改他們的實例相應的點,遊戲等值。

我能做到這一點的方式是什麼?是否可以通過將所有Team()實例放入列表中,然後將該列表導入到Match()類中?或者還有其他更優雅的方式嗎?請幫忙。

+0

部分回答:您可以通過比較簡單的方式更新團隊實例。例如,'alpha.wins + = 1'。 – Windmill

+0

但是我應該怎麼做呢?因爲我不想在每次團隊獲勝時都必須進行硬編碼,這會在代碼中失敗。 –

回答

0

我不確定你打算如何選擇哪支球隊互相比賽,但可以說這是由一個功能完成的。然後,匹配可以實現如下:

class Match(object): 
    def __init__(self, teama, teamb): 
     self.teama = teama 
     self.teamb = teamb 
    def play(self): 
     a_points = 0 
     b_points = 0 
     # code/function call to decide how many points each team gets. 
     self.teama.points += a_points 
     self.teamb.points += b_points 
     if a_points > b_points: 
      self.teama.wins += 1 
     else if b_points > a_points: 
      self.teamb.wins += 1 
     else: 
      # code for when the teams draw 

我不知道你打算如何構建一些功能,如決定多少分的球隊獲得,但是這是一個框架,希望有用/給你對你如何做事情的想法。


跟進您的評論,如果你想成爲能夠在類外創建了特定的團隊通過,你可以這樣做如下: match1 = Match(gamma, alpha)。這將創建一個新的匹配實例,其中團隊的「gamma」和「alpha」將被修改。 (該類中的teamateamb將引用這些對象。)

+0

使用這個框架作爲框架,是否有一種方法可以讓我們設置相當於例如團隊Gamma的茶葉,以便它替代團隊內的所有屬性和功能? –

+0

我已經更新了答案來解釋這一點。 – Windmill