2017-10-14 44 views
1

我有一个任务来创建一个代码,将定义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 
+0

get_transport_capacity应该返回什么? – ingvar

+0

请正确缩进您的代码。现在,它是无效的。 –

回答

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]) 
+0

'indexes = sum(list(lambda p:p.index,self.players))'假设要做什么?也许你想输入'sum(list(map(lambda p:p.index,self.players)))' – efkin

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