Вывести значения класса из суперкласса - PullRequest
0 голосов
/ 13 ноября 2018

Я использую структуру классов в 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() из кода. Имейте в виду, что инстанцирование не выполняется.

Спасибо.

...