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

How to connect one class element to another class?

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

到目前为止,我已经创建了 2 个 classes:Teams 和 Players。每个团队都有 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

这可能不是连接两个 class 的最佳方式,但是有没有办法像 Result 一样将团队 class 连接到花名册?有没有一种方法可以将属性作为列表并将玩家放入其中 link 他们?

有很多方法可以做到这一点 - 这里有一个(希望)直接的解决方案。

为球队添加属性 class 以容纳其球员。

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)