Наше приложение имеет набор сложных форм-магов. Чтобы избежать дублирования кода, я создал несколько микшинов.Получить PyCharm, чтобы узнать, какие классы являются mixin для
Проблема заключается в том, что PyCharm выделяет методы mixin с ошибкой Unresolved attribute refference
.
Это верно, так как object
не имеет таких методов. Но я знаю, что этот mixin будет использоваться только со специальными классами. Есть ли способ рассказать эту информацию PyCharm?
Сейчас я использую такой подход:
class MyMixin(object):
def get_context_data(self, **kwargs):
assert isinstance(self, (ClassToBeExtended, MyMixin))
# super.get_context_data is still highlighter,
# as super is considered as object
context = super(MyMixin, self).get_context_data(**kwargs)
context.update(self.get_preview_context())
return context
def get_preview_context(self):
# without this line PyCharm highlights the self.initial_data
assert isinstance(self, (ClassToBeExtended, MyMixin))
return {'needs': (self.initial_data['needs']
if 'type' not in self.initial_data
else '%(needs)s %(type)s' % self.initial_data)}
Хотя это работает для некоторых случаев, как автозаполнение для self.
, она не для других подобных случаев super
. Есть ли лучший подход к достижению желаемого поведения?
P.S .: Я знаю, что я могу отключить контрольную проверку для определенного имени или всего класса, но я не хочу этого делать, поскольку это не поможет в опечатке и автозаполнении.
FWIW, если pycharm не может разрешить ссылки на атрибуты, я подозреваю, что он также не сможет ни проверить опечатки, ни автозаполнение (поскольку у него нет ссылки на использование) ... –
'get_context_data (self: ClassToBeExtended) '(python3, конечно), кажется, работает. – gdoumenc