Python 如何从类中获取每个变量实例的列表?
我试图找到一种方法,从Python 如何从类中获取每个变量实例的列表?,python,python-3.x,class,Python,Python 3.x,Class,我试图找到一种方法,从Basketball类中获取self.average变量的所有实例的列表。然后我将执行max(list)以获得最大值 class Basketball: def __init__(self, name, goals, shots): self.name = name self.goals = goals self.shots = shots self.average = shots / goals
Basketball
类中获取self.average
变量的所有实例的列表。然后我将执行max(list)
以获得最大值
class Basketball:
def __init__(self, name, goals, shots):
self.name = name
self.goals = goals
self.shots = shots
self.average = shots / goals
def display_average(self):
"""
>>> b1 = Basketball("Karen", 20, 80)
>>> b1.display_average()
'Player: Karen, average goals per game: 4'
"""
returnString = f"Player: {self.name}, average goals per game: {self.average:.2f}"
return returnString
if __name__ == "__main__":
player1 = Basketball("Karen", 20, 80)
print(player1.display_average())
player2 = Basketball("Alex", 4, 19)
print(player2.display_average())
您可以创建一个列表并在其中存储该类的所有实例。然后,您可以从列表中提取所有平均值,并从中获取最大值。我会使用如下列表:
if __name__ == "__main__":
basketball_list = []
basketball_list.append(Basketball("Karen", 20, 80))
basketball_list.append(Basketball("Alex", 4, 19))
best_avg = max([i.average for i in basketball_list])
“我正试图找到一种方法,从篮球课上获得“self.average”变量的所有实例的列表。”我不清楚你的意思。您需要跟踪自己创建的类实例。类不会自动跟踪它们的实例。您可以记住构造函数中的所有
平均值
值。。。但话说回来,如果有人更改了它们,例如,如果在实例化后编写player1.average=11
,您希望发生什么?重新打开,因为让类自动跟踪其实例是解决此问题的一种糟糕方法(也是解决几乎任何建议使用自动跟踪作为解决方案的问题的糟糕方法)。使用显式容器对象几乎总是更好的。Karen和Alex是Basketball
s<代码>;-)为什么不在创建类实例时将其存储在列表中?然后您可以使用类似于max([i.average for i in instance\u list])的方法获得最大值。