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

时间:2018-03-05 12:51:26

标签: python class

我已将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'

2 个答案:

答案 0 :(得分:1)

  1. 如果你想看到Player的人类可读的implatation,你应该实现__ str __方法,例如:

    class Player():
        def __init__(self, data_row):
            self.player_name = data_row[0]
    
        def __str__(self):
            return self.player_name
    
  2. 你的team.roaster attr是一个列表,所以你不能通过键访问它,你应该将它改为dict或者只是迭代它:

    for roaster in spurs.roaster:
        print(roaster.player_name)
    

答案 1 :(得分:1)

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

for player in spurs.roaster:
    print(player.player_name)