比赛注册计划使用课程

时间:2017-10-14 19:14:28

标签: python class instance

我有一个创建代码的任务,该代码将定义2个类,一个玩家和一个团队,每个团队都有一些参数。玩家应该有一个名字,一些滑雪板,一些雪橇和一个玩家索引(之前玩家玩过的游戏数量)。

我设法定义了这个类的属性,但是我很难实现团队类。团队应该拥有团队的名称和玩家的数量 - 玩家不能只是他们的名字,它必须链接到类实例(玩家)。我不了解如何使用播放器实例中提供的信息来实施团队。到目前为止,这是我的代码:

class Player:
def __init__(self, name, skis, index):
  self.name = name
  self.sledges = []
  self.skis = []
  self.index = index
pass


class Team:
def __init__(self, name, players):
      self.name = name
      self.players = [Player]
pass

def get_players_count()

def get_transport_capacity()

def get_average_index()

*更新 感谢您的帮助,我还有一个功能可以添加,这个功能可以返回团队可以容纳的乘客数量。我尝试过这样的事情,但我认为语法不正确。用户输入每个雪橇中的位数,因此我需要迭代列表中的值以获得位置数。

def get_transport_capacity(self):
    skis = len(Player.skis)
    for i in Player.sledges:
        sledges += Player.sledges[i]
    capacity = skis + sledges
    return capacity 

2 个答案:

答案 0 :(得分:0)

而不是

self.players = [Player]

为什么不:

self.players = []

然后有一种方法可以将球员添加到球队中,如下所示:

def add_player(self, player):
     # ensure optionally that player is a PLayer instance
     assert type(player) == Player
     self.players += player

答案 1 :(得分:0)

class Player:
    def __init__(self, name, index):
        self.name = name
        self.sledges = []
        self.skis = []
        self.index = index 


 class Team:
    def __init__(self, name, players):
        self.name = name
        self.players = players

    def get_players_count(self):
        return len(self.players)

    def add_player(self, player):
        self.players.append(player)

    def get_average_index(self):
        indexes = sum(list(map(lambda p: p.index, self.players)))
        count = self.get_players_count()
        return float(indexes) / count

用法:

a = Player('AName', 2)
b = Player('BName', 11)
team = Team('TeamName', [a, b])