Python:链接类成员以访问实例变量



我正在用一个方法(remaining_time(创建一个类(Workers(的几个实例。一些工人在同一项任务上工作,因此remaining_time方法需要了解这些工人来计算正确的时间。有没有一种Python方法可以保留对类成员的引用,这样我就可以访问所有实例或实例的特定变量?

如果Workers也是一个包含所有实例的列表,那么代码将如下所示:

class Workers:
def __init__(self, task, working_power):
self.task = task
self.working_power = working_power
def remaining_time(self, task):
working_power = sum([x.working_power for x in Workers if x.task = self.task])
time = self.task.time/working_power

我发现拥有这样一个列表的唯一方法是使用默认值空列表,该列表在所有实例之间共享:

def __init__(self, task, working_power, instances = []):
self.task = task
self.working_power = working_power
instances.append(self)

不过,这似乎并不优雅。

谢谢!

通常的方式是一个类变量:

class Workers:
instances = []
def __init__(self, task, working_power):
self.task = task
self.working_power = working_power
Workers.instances.append(self)
def remaining_time(self, task):
working_power = sum([x.working_power for x in Workers.instances if x.task = self.task])
time = self.task.time/working_power

最新更新