延迟加载属性,@property d

2024-05-23 15:09:36 发布

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

我想在类中实现延迟加载的属性。我认为这很简单,并这样实现:

class Foo:
    def __init__(self):
        self._bar = None

    @property
    def bar(self):
        if not self._bar:
            self._bar = longTimeLoadedData()
        return self._bar

但是现在我很惊讶在init之后,\u bar变量甚至包含longtimeloadedata食品酒吧从来没叫过。。。有人能给我解释一下这种行为吗?提前谢谢!你知道吗


Tags: selfnone食品returnif属性fooinit
1条回答
网友
1楼 · 发布于 2024-05-23 15:09:36

它看起来已经像你想要的那样工作了:

class Foo:
    def __init__(self):
        self._bar = None

    @property
    def bar(self):
        if not self._bar:
            self._bar = 1
        return self._bar


f = Foo()

print(f._bar) # None
f.bar
print(f._bar) # 1

相关问题 更多 >