我目前正在我的CSI类中从事一个OOP项目,在这个项目中,我必须创建各种运动队和运动员对象,以及一个将运动员添加到名册中的方法addPlayer()。这就是我到目前为止所拥有的。
class Athlete:
def __init__(self, name, number):
self.name = name
self.number = number
def __str__(self):
return "Athlete(" + self.name + ", " + self.number + ")"
def name(self):
return self.name
def number(self):
return self.numberfrom Athlete import *
class SportsTeam:
roster = []
def __init__(self, city, name, colors):
self.city = city
self.name = name
self.colors = colors
SportsTeam.roster = roster
def __str__(self):
return "SportsTeam(" + self.city + ", " + self.name + \
", " + str(self.colors) + ", " + ")"
def getcity(self):
return self.city
def getname(self):
return self.name
def getcolors(self):
return self.colors
def getRoster(self):
return SportsTeam.roster
def printRoster(self):
for player in roster:
print("Current Team Roster: " + str(SportsTeam.roster))
def addPlayer(self, player):
SportsTeam.roster.append(player)
return SportsTeam.roster问题是,当我尝试使用我创建的addPlayer()方法时,我会收到一条错误消息,告诉我list没有属性。不确定需要添加什么来修复这个问题。
我只编程了几个月,所以如果解决方案是显而易见的,我很抱歉
发布于 2017-07-17 20:56:30
在处理类时,有实例变量(如self.city = city)和类变量(如roster = [])。
实例变量与类的实例相关联。因此,如果创建2个SportsTeam对象,它们都有自己的city。
类变量有点不同。它们与类的实例无关;也就是说,不管您创建了多少SportsTeam对象,都只会有一个roster变量。
对我来说,roster作为类变量似乎有点奇怪,因为每个SportsTeam都应该有自己的roster。但是,如果需要为CSI类使用类变量,则可以保留all_teams和/或all_players的列表。
考虑到这一点:
class SportsTeam:
all_teams = []
all_players = []
def __init__(self, city, name, colors):
self.city = city
self.name = name
self.colors = colors
self.roster = []
SportsTeam.all_teams.append(self)
def __str__(self):
return "SportsTeam(" + self.city + ", " + self.name + ", " + str(self.colors) + ")"
def getCity(self):
return self.city
def getName(self):
return self.name
def getColors(self):
return self.colors
def getRoster(self):
return self.roster
def printRoster(self):
# the for loop was unnecessary
print("Current Team Roster:", str(self.roster))
def addPlayer(self, player):
SportsTeam.all_players.append(player)
self.roster.append(player)
return self.roster如果希望将roster保持为类变量,请留下注释,我可以帮助您调整代码以适应这种情况。
https://stackoverflow.com/questions/45149659
复制相似问题