Подтвердить что ты не робот

Как перечислить все свойства класса

У меня есть класс SomeClass со свойствами. Например id и name:

class SomeClass(object):
    def __init__(self):
        self.__id = None
        self.__name = None

    def get_id(self):
        return self.__id

    def set_id(self, value):
        self.__id = value

    def get_name(self):
        return self.__name

    def set_name(self, value):
        self.__name = value

    id = property(get_id, set_id)
    name = property(get_name, set_name)

Каков самый простой способ перечислить свойства? Мне нужно это для сериализации.

4b9b3361

Ответ 1

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]

Ответ 2

import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]

inspect.getmembers также получает наследуемые элементы (и выбирает элементы по предикату, здесь мы закодировали isprop, потому что это не среди многих предопределенных в модуле inspect; вы также можете использовать lambda, конечно, если вы предпочитаете).