How to get properties of object in python

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

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

I know getattr,hasattr... can access the property. But why don't have the iterattr or listattr?

Expect result of ClassB object:

{'propertyB': 'B'}

Expect result of ClassB class:

['propertyB']

Thanks @juanpa.arrivillaga 's comment. vars(obj) and vars(obj.__class__) is different!

2 Answers

Use the built-in vars as follows:

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

Using a list-comprehension:

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