Я ищу хорошее решение для того, чтобы поместить (семантические) константы в класс, которые имеют отношение только к некоторой определенной функции-члену.Я не хочу инициализировать эти константы каждый раз, когда я вызываю функцию-член, но я также не хочу забивать ими класс:
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
.
Поэтому мой вопрос: есть ли способ иметь локальные константы функций-членов, которые инициализируются только один раз, а не каждый вызов функции.