Beziehen Sie PyCharm, um zu erfahren, für welche Klassen es sich handelt

9

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.

    
Igor 27.11.2015, 11:35
quelle

2 Antworten

2

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] .

    
MisterMiyagi 26.07.2016 08:54
quelle
1

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.

    
ceruleus 15.07.2016 14:35
quelle

Tags und Links