如何列出所有类的属性
问题描述:
我有类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
,当然,如果你更喜欢)。
非常好。谢谢。 – zinovii 2009-08-01 00:12:41
唉,这会遗漏继承的属性......! – 2009-08-01 01:40:39