【问题标题】:Python: link class members to access instance variable [duplicate]Python:链接类成员以访问实例变量
【发布时间】:2020-04-26 10:38:28
【问题描述】:

我正在使用方法 (remaining_time) 创建一个类 (Workers) 的多个实例。有些工人在做同一个任务,所以剩余时间方法需要知道这些工人来计算正确的时间。 有没有一种 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)

但这似乎并不优雅。

谢谢!

【问题讨论】:

    标签: python class reference instance


    【解决方案1】:

    通常的方式是类变量:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多