如何将一个班级元素连接到另一个班级?

时间:2020-07-04 03:51:42

标签: python function class simulation

所以我已经学习python几个月了,并决定制作一个棒球模拟游戏。

到目前为止,我已经创建了2个类:团队和玩家。每个团队都有一个team idnamerecord。每个玩家都有一个player idteam idnameposition

我想知道如何将创建的玩家连接到创建的团队并拥有一个名册变量。目前,我拥有所有已创建玩家的列表,并将其分配给2个不同的已创建团队。然后具有for循环功能,可将所有具有相同团队ID的相同球员放在一起。这就是我产生球员结果和他们位置的结果。

class Player:
    def __init__(self, player_id, team_id, name, position):
        self.pid = player_id
        self.tid = team_id
        self.name = name
        self.position = position

class Team:
    def __init__(self, team_id, location, team_name, record):
        self.tid = team_id
        self.location = location
        self.team = team_name
        self.record = record

def team_1():
    for player in players:
        if player.tid == 1:
            print(player.name, player.position)

结果:

Player1 P
Player2 C
Player3 1st
Player4 2nd
Player5 3rd
Player6 SS
Player7 LF
Player8 CF
Player9 RF

这可能不是连接两个类的最佳方法,但是有没有一种方法可以像结果一样将Team类连接到名册?有没有一种方法可以将属性作为列表并将玩家放置在其中以链接他们?

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点-这是一个(希望)简单的解决方案。

向Team类添加属性以容纳其玩家。

class Team:
    def __init__(self, team_id, location, team_name, record):
        self.tid = team_id
        self.location = location
        self.team = team_name
        self.record = record
        self.roster = []

当您成为一名球员时,将其添加到团队中。

team1 = Team(1,'here','us','inf-0')
p1 = Player(1,1,'me','concession stand')
team1.roster.append(p1)

在这种情况下,名册包含完整的播放器实例。您可能只想按住玩家ID。

p1 = Player(1,1,'me','concession stand')
team1.roster.append(p1.pid)

也许您有球队列表,并且在成为一名球员时需要找到球队。

team1 = Team(1,'here','us','inf-0')
team2 = Team(2,'there','there','???')

teams = [team1,team2]

p1 = Player(1,1,'me','concession stand')
for team in teams:
    if team.tid == p1.pid:
        team.roster.append(p1)