获取类的所有装饰属性

时间:2015-09-28 22:12:01

标签: python

我有一个看起来像这样的课程:

class Test(object):

    @property
    def prop1(self):
        return 5

    @property
    def prop2(self):
        return 10

如何取回我实施的属性?例如,[prop1, prop2]

我尝试了vars()dir(),但这些似乎也返回了隐藏/特殊方法。

执行此操作的唯一方法是解析没有下划线的结果dir()吗?

2 个答案:

答案 0 :(得分:3)

试试这个

>>>[ k for k,v in Test.__dict__.items() if isinstance(v, property) ]
['prop1', 'prop2']

由于属性是一种类型,我们可以使用isinstance在类的内部字典中找到它。

答案 1 :(得分:0)

您可以使用以下内容:

def isprop(v):
    return isinstance(v, property)
propnames = [name for (name, value) in inspect.getmembers(Test, isprop)]