Unsere Anwendung verfügt über komplexe Formularassistenten. Um Code-Duplizierung zu vermeiden, habe ich mehrere Mixins erstellt.
Das Problem ist, dass PyCharm Mixing-Methoden mit Unresolved attribute refference
error markiert.
Dies ist korrekt, da object
keine solchen Methoden hat. Aber ich weiß, dass dieses Mixin nur mit speziellen Klassen verwendet wird. Gibt es eine Möglichkeit, diese Informationen PyCharm mitzuteilen?
Für den Moment verwende ich einen solchen Ansatz:
%Vor% Dies funktioniert in einigen Fällen wie Autocomplete für self.
, in anderen Fällen wie super
jedoch nicht. Gibt es einen besseren Ansatz, um das gewünschte Verhalten zu erreichen?
PS: Ich weiß, dass ich die Referenzprüfung für einen bestimmten Namen oder die ganze Klasse deaktivieren kann, aber ich möchte das nicht tun, da es bei Tippfehlern und bei der automatischen Vervollständigung nicht hilft.
Sie können type-hint an PyCharm welche Art von Unterricht teilnehmen zu erwarten.
%Vor% Es ist immer noch nicht ganz vergleichbar mit anderen Arten der Handhabung.
PyCharm ist faul bei der Bewertung und tut dies nur, wenn er zuerst an self
arbeitet.
Beim Zugriff auf die Attribute des Mixins ist es etwas schwierig - self, # type: dict | DictMixin
funktioniert für eine meiner Klassen, aber nicht in meinem Testcode.
In python 3.5 sollten Sie # type: typing.Union[dict, DictMixin]
.
Wenn Sie Mixin erstellen, zum Beispiel ClassSub, die eine Unterklasse von ClassSuper ist, können Sie Mixins auf diese Weise implementieren:
%Vor%und verwende sie dann wie folgt:
%Vor% Auf diese Weise benutze ich einige Mixins für Modelle in Django. Auch django-extensions verwendet ähnliche Muster (gibt Modelle an, die tatsächlich Mixins sind). Im Prinzip müssen Sie ClassSuper
nicht erben, weil es in jedem Ihrer Mixins "enthalten" ist.
Am wichtigsten - PyCharm funktioniert auf diese Weise wie ein Zauber.