Ответ 1
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
У меня есть класс 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)
Каков самый простой способ перечислить свойства? Мне нужно это для сериализации.
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
import inspect
def isprop(v):
return isinstance(v, property)
propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
inspect.getmembers
также получает наследуемые элементы (и выбирает элементы по предикату, здесь мы закодировали isprop
, потому что это не среди многих предопределенных в модуле inspect
; вы также можете использовать lambda
, конечно, если вы предпочитаете).