我有一个应用程序,我希望该类的第一个实例可供该类的所有后续实例访问。我实现了这个:
class Basic(object):
def __init__(self, initial=False):
super(Basic, self).__init__()
if initial:
Basic.initial = self
它运行良好,但当我尝试使用pickle
或dill
序列化时,动态创建的类属性Basic.initial
无法正确序列化(How to write all class variables to disk with dill?)。< / p>
我被告知我正在做的事情是“糟糕的”,我可以理解,因为它似乎有点迂回。
我希望第一个实例可以在将来的所有实例中使用而不经常传递它。
有没有更好的方法来实现这一目标?也许会正确序列化?
答案 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__()
虽然这看起来似乎很迂回,但似乎有效。
也许有更优雅的解决方案?