重写__bool__以检查类是否存在



这是一个设计问题。我正在用一个实例变量初始化一个类,该实例变量只有在调用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.cachefunctools.cached_property

相关内容

  • 没有找到相关文章

最新更新