Próbuję podzielić moją ogromną klasę na dwie; cóż, w zasadzie do klasy "main" i mieszanki z dodatkowymi funkcjami, takimi jak:
main.py
plik:
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
mymixin.py
plik:
class MyMixin(object):
def func2(self: Main, xxx): # <--- note the type hint
...
Chociaż działa to dobrze, podpowiedź MyMixin.func2
dotycząca typu oczywiście nie może działać. Nie mogę importować main.py
, ponieważ otrzymywałbym import cykliczny i bez podpowiedzi mój redaktor (PyCharm) nie może powiedzieć, co self
jest.
Używam Pythona 3.4 i chcę przejść na 3.5, jeśli jest tam dostępne rozwiązanie.
Czy jest jakiś sposób, żebym mógł podzielić moją klasę na dwa pliki i zachować wszystkie „połączenia”, aby moje IDE nadal oferowało mi automatyczne uzupełnianie i wszystkie inne korzyści, które z niego pochodzą, znając typy?
self
, ponieważ zawsze będzie to podklasa bieżącej klasy (a każdy system sprawdzania typu powinien być w stanie samodzielnie to rozgryźć). Czyfunc2
próby wywołaniafunc1
, które nie są zdefiniowane wMyMixin
? Może powinno być (jakoabstractmethod
, może)?