Как получить свойства объекта в питоне - PullRequest
2 голосов
/ 01 октября 2019
class ClassB:
    def __init__(self):
        self.b = "b"
        self.__b = "__b"

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

Я знаю, getattr,hasattr... может получить доступ к собственности. Но почему бы не иметь iterattr или listattr?

Ожидаемый результат ClassB объекта:

{'propertyB': 'B'}

Ожидаемый результат ClassB класса:

['propertyB']

Спасибо за комментарий @ juanpa.arrivillaga. vars(obj) и vars(obj.__class__) отличается!

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Используйте встроенный 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']
0 голосов
/ 01 октября 2019

Чтобы составить список свойств класса Python, вы можете использовать __ dict __

Пример

>>> class C(object):
x = 4

>>> c = C()
>>> c.y = 5
>>> c.__dict__
{'y': 5}

См. Эту ссылку для получения дополнительных примеров и информации - https://codesachin.wordpress.com/2016/06/09/the-magic-behind-attribute-access-in-python/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...