<pre><code>class Team:
def __init__(self, teamName, drivers=None):
self.teamName = teamName
self.drivers = list(drivers or [])
for driver in self.drivers:
setattr(driver, "team", self)
</code></pre>
<p>每当创建团队实例时,将每个驱动程序的团队属性设置为相应的“团队”实例。另外,将<code>team = None</code>添加到<em>驱动程序</em>类中</p>
<p><strong>编辑</strong></p>
<p>正如@crazychunk所指出的,驱动程序对象也可以单独添加到驱动程序列表中,并且需要进行处理。因此,我提出了一个不同的解决方案</p>
<pre><code>class Drivers(list):
def __init__(self, *args, team, **kwargs):
super(Drivers, self).__init__(*args, *kwargs)
self.team = team
for driver in self:
driver.team = team
def append(self, p_object):
super(Drivers, self).append(p_object)
p_object.team = self.team
def extend(self, iterable):
super(Drivers, self).extend(iterable)
for x in iterable:
x.team = self.team
class Team:
def __init__(self, teamName, drivers=None):
self.teamName = teamName
self.drivers = Drivers(drivers or [], team=self)
class Driver:
def __init__(self, name, country, number: str, podiums: int):
self.name = name
self.country = country
self.number = number
self.podiums = podiums
</code></pre>
<p>因此,即使将新的驱动程序添加到团队中,drivers类也将处理团队属性的设置</p>