我正在寻找一个很好的解决方案,以将(语义)常量放在只与某些特定成员函数相关的类中。我不想每次调用成员函数时都初始化这些常量,但是我也不想用它们阻塞类:
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
的其他成员,甚至可能行不通。
因此,我的问题是:有没有一种方法可以使成员函数局部常量仅被初始化一次,而不是每次函数调用都被初始化。