Python: link class 成员访问实例变量
Python: link class members to access instance variable
我正在使用一种方法 (remaining_time) 创建 class (Workers) 的多个实例。一些工人从事相同的任务,因此 remaining_time 方法需要了解这些工人以计算正确的时间。
是否有一种 pythonic 方法来保留对 class 成员的引用,以便我可以访问所有实例或实例的特定变量?
如果 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 变量:
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
我正在使用一种方法 (remaining_time) 创建 class (Workers) 的多个实例。一些工人从事相同的任务,因此 remaining_time 方法需要了解这些工人以计算正确的时间。 是否有一种 pythonic 方法来保留对 class 成员的引用,以便我可以访问所有实例或实例的特定变量?
如果 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 变量:
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