Я использую структуру классов в Python, чтобы сохранить и легко запомнить константы.
Вот пример иерархии констант:
class classification:
class baseline:
nb, logreg = "nb", "logreg"
class neural:
perceptron, mlp = "perceptron", "mlp"
Таким образом, я могу проверить параметры, такие как if classifier == classification.neural.mlp: #...
Я хочу, чтобы функция возвращала все возможные значения с данного уровня.
Если у меня есть класс в переменной, это достижимо так:
> [v for (k,v) in dict(vars(classification.neural)).items()
if not k.startswith("__")]
['perceptron', 'mlp']
Есть ли способ сделать это через общий базовый класс?
то есть как
class def_level:
def available():
class_var = "somehow_get_this"
[v for (k,v) in dict(vars(class_var)).items() if not k.startswith("__")]
class classification:
class baseline(def_level):
nb, logreg = "nb", "logreg"
class neural(def_level):
perceptron, mlp = "perceptron", "mlp"
чтобы я мог позвонить classification.neural.available()
из кода.
Имейте в виду, что инстанцирование не выполняется.
Спасибо.