Нет, эта конструкция просто создает область для именования. Если вы разбили его по частям, вы увидите, что у вас есть внешний
(...)();
. Это вызов функции. Внутри круглой скобки у вас есть:
function() {}
Это анонимная функция. Все, что объявлено с помощью var внутри конструкции, будет видимо только внутри одной и той же конструкции и не будет загрязнять глобальное пространство имен.
Это делается с трудом, когда это делается.
Пожалуйста, пересмотреть переопределение __getattribute__
и использовать для этого старые свойства.
Я подозреваю, что простой «getter»
Да, у вас может быть несколько похожих полей, но я думаю, что простые, очевидные свойства лучше подходят для Django ORM.
Я полагаю, что переопределение __getattribute__
или __getattr__
может привести к стоимости исполнения. Вероятно, есть лучший способ решить эту проблему:
setattr(self, field_name, getattr(self.parent, field_name))
. None
. Я разработка приложения Django для этого: https://github.com/Altaisoft/django-inheritance
Нужны ли вам атрибуты этого родителя теневым собственным? Если нет, лучше переписать __getattr__()
вместо __getattribute__()
, который не вызывается, когда сам экземпляр имеет свойство с этим именем:
def __getattr__(self, name):
return getattr(self.parent, name)