这是一个设计问题。我正在用一个实例变量初始化一个类,该实例变量只有在调用run函数时才会获得其值?由于所有运行的数据都是相同的,我不想一遍又一遍地初始化它。我应该检查变量是None还是覆盖bool方法?或者有更好的方法来实现这一点吗?
class Data:
def __bool__(self):
return True
class A:
def __init__(self):
self.data = None
def run_bool(self):
if not self.data:
self.data = Data()
def run_none(self):
if self.data is None:
self.data = Data()
只需检查它是否为None
。将__bool__
定义为始终返回True
没有任何作用,因为泛型Python对象无论如何都是真实的,但显式的None
检查允许稍后添加真正的__bool__
行为(或切换到具有这种行为的类型(,而不会破坏内容。
从你的问题中还不清楚,但也许你真正想要的是functools.cache
或functools.cached_property
。