@Derfirm
Noname Developer.

Как правильно выбирать определённые пользователем атрибуты класса?

Доброго времени суток.
У меня есть объект, в котором определены пользователем некие атрибуты
class Quality(object):

    REGULAR = 'regular'
    CONSCRIPT = 'conscript'
    ELITE = 'elite'
    HEROIC = 'heroic'
    PARAGON = 'paragon'

    @classmethod
    def to_form(cls):
        return filter(lambda x: not x[0].startswith('__'), cls.__dict__.items())


Мне нужно выбирать только определённые пользователем, на мой взгляд такое решение выглядит немного "топорно", хотелось бы что-нибудь поизящнее.
  • Вопрос задан
  • 2305 просмотров
Решения вопроса 1
ali_aliev
@ali_aliev
Разработчик на Django/Python, JavaScript
In [1]: import inspect

In [2]: def get_user_attributes(cls):
   ...:     boring = dir(type('dummy', (object,), {}))
   ...:     return [item for item in inspect.getmembers(cls)
   ...:     if item[0] not in boring]
   ...:

In [3]: class C(object):
   ...:     pass
   ...:

In [4]: get_user_attributes(C)
Out[4]: []

In [5]: class C(object):
   ...:     first = 1
   ...:     second = 2
   ...:

In [6]: get_user_attributes(C)
Out[6]: [('first', 1), ('second', 2)]

In [7]:
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы