课堂记忆与静态课堂

问题描述 投票:0回答:1

只是寻找关于如何在使用静态类和记忆类之间做出选择的意见或想法。

例如,考虑这两个 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()

他们都只进行一次昂贵的计算——那么,哪一个是更好的方法?权衡是什么?

这个问题不需要:)

python static memoization tradeoff
1个回答
0
投票

这是我能想到的最基本的做法,也是一个非常合理的做法:

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
© www.soinside.com 2019 - 2024. All rights reserved.