成员函数局部的常量

时间:2018-11-29 21:51:26

标签: python class closures constants member-functions

我正在寻找一个很好的解决方案,以将(语义)常量放在只与某些特定成员函数相关的类中。我不想每次调用成员函数时都初始化这些常量,但是我也不想用它们阻塞类:

class C:
    def __init__(self):
        # possible class related constants here
        self.func_constant = some_value # meh, does not belong here

    def func(self):
        func_constant = some_value # ... no, that is inefficient

如果这是在自由函数的上下文中,我将使用闭包:

def make_func():
    constant = some_value
    def func():
        #code
    return func

func = make_func()

我不知道将成员函数声明为闭包的返回值的方法。我的意思是我可以这样做:

class C:
    def __init__(self):
        # possible class related constants here
        self.func = make_func()

但是出于各种不同的原因,这是一个糟糕的设计,并且如果func需要访问C的其他成员,甚至可能行不通。

因此,我的问题是:有没有一种方法可以使成员函数局部常量仅被初始化一次,而不是每次函数调用都被初始化。

0 个答案:

没有答案