Estou tentando dividir minha enorme classe em duas; bem, basicamente na classe "principal" e um mixin com funções adicionais, como:
main.py Arquivo:
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
mymixin.py Arquivo:
class MyMixin(object):
def func2(self: Main, xxx): # <--- note the type hint
...
Agora, embora isso funcione bem, a dica de tipo MyMixin.func2obviamente não pode funcionar. Eu não posso importar main.py, porque eu obteria uma importação cíclica e sem a dica, meu editor (PyCharm) não poderia dizer o que selfé.
Estou usando Python 3.4, disposto a mudar para 3.5 se houver uma solução disponível lá.
Existe alguma maneira de dividir minha classe em dois arquivos e manter todas as "conexões" para que meu IDE ainda me ofereça preenchimento automático e todas as outras vantagens que vêm dele, sabendo os tipos?
class Main(MyMixin, SomeBaseClass)para que os métodos da classe mais específica possam sobrescrever os da classe base
self, já que sempre será uma subclasse da classe atual (e qualquer sistema de verificação de tipo deve ser capaz de descobrir isso por conta própria). Estáfunc2tentando ligarfunc1, o que não está definido emMyMixin? Talvez devesse ser (comoabstractmethod, talvez)?