如何从类对象列表中检索类属性

问题描述 投票:-1回答:2

我已将nba数据集导入名为nba的变量中。

这些是我的课程:

class Player():
        def __init__(self, data_row):
            self.player_name = data_row[0]

class team():
    def __init__(self,team_name):
        self.team_name = team_name
        self.roaster = []
        for x in nba:
            if x[3]==self.team_name:
                self.roaster.append(Player(x))

我想要的是将团队中的每个玩家存储到团队对象中。

spurs = team("TOT")

但是当我运行代码时,我得到一个类对象列表如下:

print(spurs.roaster)
[<__main__.Player at 0x2211b2d06a0>,
 <__main__.Player at 0x2211b2d06d8>,
 <__main__.Player at 0x2211b2d0630>,
 <__main__.Player at 0x2211b2d0588>,]

如何检索对象属性?我试过了:

spurs.roaster.player_name 

但它提出了一个错误:

AttributeError: 'list' object has no attribute 'player_name'
python class
2个回答
1
投票
  1. 如果你想看到Player的人类可读植入,你应该实现__ str ___方法,例如: qazxsw poi

你的team.roaster attr是一个列表,所以你不能通过密钥访问它,你应该将其更改为dict或者只是迭代它:

class Player():
    def __init__(self, data_row):
        self.player_name = data_row[0]

    def __str__(self):
        return self.player_name

1
投票

你得到的错误是一种自我解释,qazxsw poi确实是一个列表。 qazxsw poi属性属于此列表中的项目。要访问这些属性,您必须浏览列表。

for roaster in spurs.roaster:
    print(roaster.player_name)
© www.soinside.com 2019 - 2024. All rights reserved.