Python在构造期间将类引用传递给另一个类

2024-10-02 02:37:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我打算创建一个数据分发器类作为可变类:

class DataDistributor(object):
    def __init__(self):
        self.target_trackid = -1

    def next_sen(self):
        self.target_trackid += 1
        return self.target_trackid

这样我就可以在数据上全局保存一个指针。在

我还有一门课:

^{pr2}$

因此,当我创建许多Env实例时,每个Env实例将获得不同的数据点。在

所以我用这个来创建我的实例:

ddist = DataDistributor()
env = Env(ddist)
envs = [pickle.loads(pickle.dumps(env)) for _ in range(12)]

envs[0].reset()
envs[1].reset()
envs[2].reset()

print envs[0].target_trackid
print envs[1].target_trackid
print envs[2].target_trackid

结果都是一样的:一堆0

我不太确定Python是如何处理这个问题的:(如果有一个可行的解决方案来实现我想要实现的目标!在


Tags: 数据实例selfenvtargetdefpicklereset
2条回答

pickle.load将创建不同的对象,这意味着每个env对象中的datadistributor变量将被引用

如何创建一个类变量来跟踪创建的对象?简单的类结构如下:

class Env(object):
    my_counter = 0    # Your class variable

    def __init__(self, param1, param2):
        # some initialization
        Env.my_counter += 1   # increament everytime object is created
        # some logic

样本运行:

^{pr2}$

传递不同类的对象只是为了跟踪其他类创建的对象,这绝对不是正确的方法。

相关问题 更多 >

    热门问题