В объекте Python, как я могу увидеть список свойств, которые были определены с помощью декоратора @property?
Я могу видеть переменные-члены первого класса с помощью self.__dict__
, но я также хотел бы увидеть словарь свойств, как это определено в @property декоратор. Как я могу это сделать?
Ответы
Ответ 1
Вы можете добавить функцию в свой класс, которая выглядит примерно так:
def properties(self):
class_items = self.__class__.__dict__.iteritems()
return dict((k, getattr(self, k))
for k, v in class_items
if isinstance(v, property))
Это ищет любые свойства в классе, а затем создает словарь с записью для каждого свойства с текущим значением экземпляра.
Ответ 2
Свойства являются частью класса, а не экземпляром. Поэтому вам нужно посмотреть self.__class__.__dict__
или эквивалентно vars(type(self))
Таким образом, свойства будут
[k for k, v in vars(type(self)).items() if isinstance(v, property)]
Ответ 3
Для объекта f это дает список членов, которые являются свойствами:
[n for n in dir(f) if isinstance(getattr(f.__class__, n), property)]
Ответ 4
dir(obj)
содержит список всех атрибутов obj
, включая методы и атрибуты.