如何涉及来自不同类的两个实例,python 2
我正在尝试为几个朋友创建一个足球比赛程序。我目前有一个类来实例化团队,我正在编写匹配实例化类。如何涉及来自不同类的两个实例,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()类中?或者还有其他更优雅的方式吗?请帮忙。
我不确定你打算如何选择哪支球队互相比赛,但可以说这是由一个功能完成的。然后,匹配可以实现如下:
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”将被修改。 (该类中的teama
和teamb
将引用这些对象。)
使用这个框架作为框架,是否有一种方法可以让我们设置相当于例如团队Gamma的茶叶,以便它替代团队内的所有属性和功能? –
我已经更新了答案来解释这一点。 – Windmill
部分回答:您可以通过比较简单的方式更新团队实例。例如,'alpha.wins + = 1'。 – Windmill
但是我应该怎么做呢?因为我不想在每次团队获胜时都必须进行硬编码,这会在代码中失败。 –