【发布时间】:2015-07-26 13:42:26
【问题描述】:
这是我想在代码中做的一个例子:
class MyClass(object):
@classmethod
def test_func(cls, x):
try:
return cls.cache[x]
except AttributeError:
cls.cache = {}
except (AttributeError, KeyError):
cls.cache[x] = "CACHE STORE"
return cls.cache[x]
这里的想法是我的班级将根据输入 x 缓存一些结果。但是,我不想在需要之前开始创建缓存。所以我第一次将任何x 传递给它时,我希望它创建缓存,并用一些东西填充它。有没有办法让它同时击中except 块?现在它目前只打第一个
【问题讨论】:
-
听起来你想要一个singleton...
-
创建一个空的字典会给你的类的创建增加微不足道的开销。只需将
cache = {}作为类属性即可。 -
我认为您可以改编我之前写的答案:stackoverflow.com/a/30235268/3001761
标签: python exception try-catch