Ich versuche meine große Klasse in zwei Teile zu teilen. Nun, im Grunde in die "Haupt" -Klasse und ein Mixin mit zusätzlichen Funktionen, wie so:
main.py
Datei:
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
mymixin.py
Datei:
class MyMixin(object):
def func2(self: Main, xxx): # <--- note the type hint
...
Nun, obwohl dies gut funktioniert, kann der Typhinweis MyMixin.func2
natürlich nicht funktionieren. Ich kann nicht importieren main.py
, da ich einen zyklischen Import erhalten würde und mein Editor (PyCharm) ohne den Hinweis nicht sagen kann, was self
ist.
Ich verwende Python 3.4 und bin bereit, auf 3.5 umzusteigen, wenn dort eine Lösung verfügbar ist.
Gibt es eine Möglichkeit, meine Klasse in zwei Dateien aufzuteilen und alle "Verbindungen" beizubehalten, sodass meine IDE mir weiterhin die automatische Vervollständigung und alle anderen Extras bietet, die daraus entstehen, wenn ich die Typen kenne?
class Main(MyMixin, SomeBaseClass)
damit Methoden aus der spezifischeren Klasse diejenigen aus der Basisklasse
self
, da es immer eine Unterklasse der aktuellen Klasse sein wird (und jedes Typprüfsystem sollte in der Lage sein, dies selbst herauszufinden). Wirdfunc2
versucht, Anruffunc1
, der nicht in definiert istMyMixin
? Vielleicht sollte es sein (alsabstractmethod
, vielleicht)?