Python: property object вместо значения

Не раз уже бывало, что при разработке на Python в какой-то части кода вместо значения интересующей переменной в дебаг-лог попадает сообщение вроде этого:
INFO src.wiki.views views.dispatch:123 'content': '<property object at 0x10ae22f70>'
То, что у получение значения content в этом классе реализовано через property,- и так понятно, но почему вылезает этот самый самый загадочный property object вместо значения? Всё не просто, а очень просто: во всех этих случаях была попытка получить значение из функции, обёрнутой в @property, но не из экземпляра класса, а из самого класса.

Такое происходит из-за того, что в Python всё является объектами, даже классы. Запрашивая свойство (property) у класса вместо экземпляра,- получаем запрошенное, но это не значение,- а сам метод, вложенный в объект property.

То есть,- что запросил,- то и получил. Просто надо быть внимательнее и избегать неудачных паттернов, при которых в принципе возможно использование переменной - класса вместо переменной - экземпляра.

Комментарии

Популярные сообщения