【发布时间】:2021-12-03 21:59:47
【问题描述】:
我有一个类 (Team),它是另一个类 (Player) 的集合。在最简单的示例中,我只有一个 property 与 Player,但我的真实世界代码有几十个更复杂的属性,我经常添加更多属性。
目前每次我向Player添加一个新的property,我都需要手动向Team添加四个新属性,但我知道必须有更好的方法来做到这一点。我希望每次我在Player 中创建一个新的property 时,Team 类都会自动添加这四个属性,从而大大减少了我需要编写的代码,但我不确定最好的方法这个。
from statistics import mean, median
class Player:
def __init__(self, name, age):
self.name = name
self._age = age
@property
def age(self):
return self._age
class Team:
def __init__(self, players):
self.players = players
@property
def all_ages(self):
return {player.name: player.age for player in self.players}
@property
def total_age(self):
return sum([player.age for player in self.players])
@property
def average_age(self):
return mean([player.age for player in self.players])
@property
def median_age(self):
return median([player.age for player in self.players])
p1 = Player('John', 8)
p2 = Player('Tim', 9)
p3 = Player('Annie', 11)
team = Team([p1, p2, p3])
【问题讨论】:
-
您的示例代码中不涉及继承——我不希望球员和他们所属的球队之间有任何继承。集合类通常不会从它们包含的对象继承任何东西(因为这样做会严重限制它们的用处)。听起来你在混淆“is-a”和“has-a”类关系。
标签: python class inheritance properties