2017-04-25 15 views
0

私はいくつかの友人のサッカーマッチプログラムを作成しようとしています。私は現在、チームをインスタンス化するためのクラスを持っていますが、私はクラスをインスタンス化しています。別のクラス、つまりPython 2から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()クラス - しようとしているチームクラスの2つのインスタンスが含まれています。たとえば、Match()で関数を呼び出して、チームのアルファとチームのガンマがお互いに対戦するように指定し、インスタンスに対応するポイント、ゲームなどの値を勝ち負けすると指定します。

どうすればいいですか?すべてのTeam()インスタンスをリストに入れ、そのリストをMatch()クラスにインポートすることで可能ですか?それとももっとエレガントな方法がありますか?助けてください。

+0

部分的な回答:チームインスタンスを非常に簡単に更新することができます。 'alpha.wins + = 1'などです。 – Windmill

+0

しかし、私はそれをPythonでやっていかなければなりませんか?なぜなら、チームが勝つたびにハードコードする必要はないから、それはコードでそれを行うことのポイントを打ち負かしてしまうからです。 –

答えて

0

どのチームがお互いにプレイしているかを正確には分かりませんが、1つの機能で完了すると言います。すると、次のようにマッチを実装することができます。私はあなたがチームが得るどのように多くのポイントを決定するように、いくつかの機能を構築するつもりかどうかはわかりません

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)を。これにより、チームのガンマとアルファが変更される新しいマッチインスタンスが作成されます。 (クラス内のteamaおよびteambはこれらのオブジェクトを参照します)

+0

これをフレームワークとして使用すると、teamaをたとえばチームGammaと同等に設定して、チーム内のすべてのプロパティと関数を置き換えることができますか? –

+0

私はこれを説明するために答えを更新しました。 – Windmill

関連する問題