如何从不同的类中涉及两个实例,python 2

时间:2017-04-25 03:47:47

标签: python-2.7 class

我正在尝试为几个朋友创建一个足球比赛计划。我目前有一个实例化团队的类,我正在编写匹配实例化类。

我目前拥有的是:

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()类?或者还有其他更优雅的方式吗?请帮忙。

1 个答案:

答案 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在类中将引用这些对象。)