我已将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'
答案 0 :(得分:1)
如果你想看到Player的人类可读的implatation,你应该实现__ str __方法,例如:
class Player():
def __init__(self, data_row):
self.player_name = data_row[0]
def __str__(self):
return self.player_name
你的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)