只是寻找关于如何在使用静态类和记忆类之间做出选择的意见或想法。
例如,考虑这两个 python 类:
@cached
class A:
def __init__(self):
#expensive computation
def a(self):
#do something
这门课可以这样称呼:
A().a()
现在考虑第二堂课:
class B:
is_init = False
@classmethod
def __init(cls):
#expensive computation
cls.is_init=True
@classmethod
def b(cls):
if not cls.is_init:
cls.__init()
#do stuff
像:
B.b()
他们都只进行一次昂贵的计算——那么,哪一个是更好的方法?权衡是什么?
这个问题不需要:)
这是我能想到的最基本的做法,也是一个非常合理的做法:
import functools
def A:
def __init__(self):
self.connection = _initialize_connection()
def get(self):
# use self.connection to do stuff
return stuff
@functools.cache
def _initialize_connection():
# expensive initialization
return connection