首页 > 解决方案 > 如何在python中获取对象的属性

问题描述

class ClassB:
    def __init__(self):
        self.b = "b"
        self.__b = "__b"

    @property
    def propertyB(self):
        return "B"

我知道getattr,hasattr...可以访问该属性。但是为什么没有iterattror listattr

期望ClassB对象的结果:

{'propertyB': 'B'}

期望ClassB类的结果:

['propertyB']

感谢@juanpa.arrivillaga 的评论。 vars(obj)而且vars(obj.__class__)是不同的!

标签: pythonpython-3.xreflection

解决方案


使用内置vars如下:

properties = []
for k,v in vars(ClassB).items():
    if type(v) is property:
        properties.append(k)

使用列表理解:

>>> [k for k,v in vars(ClassB).items() if type(v) is property]
['propertyB']

推荐阅读