Как получить атрибут под названием "property" и использовать @property decorator?
У меня есть небольшая проблема, и я пробовал гуглить, но это не приносит ничего полезного.
Я разрабатываю приложение django, и мне нужно/нужно иметь поле под названием "property". Причина этого заключается в том, что - это техническое название вещи, которой я пытаюсь управлять, и там, где это возможно, я хотел бы сохранить деловую терминологию.
Теперь это не было проблемой... до сегодняшнего дня.
Теперь мне нужен метод, который я хотел бы использовать в качестве свойство, но есть небольшое столкновение вокруг использования маркера property
.
class DataElementConcept(trebleObject):
template = "polls/dataElementConcept.html"
objectClass = models.ForeignKey(ObjectClass,blank=True,null=True)
property = models.ForeignKey(Property,blank=True,null=True)
@property
def registryCascadeItems(self):
return [self.objectClass,self.property]
Я по понятным причинам получаю эту ошибку.
File "/home/theodore/Github/possum-mdr/polls/models.py", line 381, in DataElementConcept
@property
TypeError: 'ForeignKey' object is not callable
Есть ли способ обойти это, который позволяет мне рассматривать этот метод как свойство и сохранять атрибут property
?
2 ответа:
Может быть, это поможет:
# On the module-level, do a workaround reference # as property() is just a normal built-in function _property = property class Foobar: property = .... @_property def registryCascadeItems(self): ....
Используйте "полное" имя встроенного свойства:
Конечно, я использовал цитаты вокруг термина "полностью квалифицированный", потому что это не питонский термин. В python нет имен-квалификаций. То, что это на самом деле, является просто еще одним местом, где оригиналimport __builtin__ @__builtin__.property def registryCascadeItems(self): ...
property
определен и может быть доступен.ИМХО, это также делает ваш код более читаемым. Нет никаких сомнений в том, какого рода свойство задействовано-вы явно ссылаетесь на встроенное.