存储类的初始实例以供将来所有实例访问

时间:2017-03-13 18:10:28

标签: python pickle dill

我有一个应用程序,我希望该类的第一个实例可供该类的所有后续实例访问。我实现了这个:

class Basic(object):
    def __init__(self, initial=False):
        super(Basic, self).__init__()
        if initial:
            Basic.initial = self

它运行良好,但当我尝试使用pickledill序列化时,动态创建的类属性Basic.initial无法正确序列化(How to write all class variables to disk with dill?)。< / p>

我被告知我正在做的事情是“糟糕的”,我可以理解,因为它似乎有点迂回。

我希望第一个实例可以在将来的所有实例中使用而不经常传递它。

有没有更好的方法来实现这一目标?也许会正确序列化?

1 个答案:

答案 0 :(得分:0)

我最终创建了一个类似这样的模块:

class BasicInit(object):
    def __init__(self):
        super(BasicInit, self).__init__()

    def read(self):
        #read some stuff from files...

    def work(self):
        #do whatever work

initial_thing = BasicInit()
initial_thing.read()

class Basic(BasicInit):
    initial = initial_thing
    def __init__(self):
        super(Basic, self).__init__()

虽然这看起来似乎很迂回,但似乎有效。

也许有更优雅的解决方案?