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.func2
obviamente 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áfunc2
tentando ligarfunc1
, o que não está definido emMyMixin
? Talvez devesse ser (comoabstractmethod
, talvez)?