我想把我的大班分成两部分; 好吧,基本上进入"主"类和具有附加功能的mixin,如下所示:
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
Run Code Online (Sandbox Code Playgroud)
现在,虽然这很好用,但MyMixin.func2中的类型提示当然无法正常工作.我无法导入main.py,因为我得到一个循环导入而没有提示,我的编辑器(PyCharm)无法分辨出什么main.py是.
使用Python 3.4,如果有可用的解决方案,愿意转向3.5.
有没有什么办法可以将我的课分成两个文件并保留所有的"连接",以便我的IDE仍然提供自动完成功能以及知道类型的所有其他好东西?
在 PyCharm 中,我有一些看起来像这样的代码:
class Mixin:
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs.update({'foo': 'bar'})
return kwargs
Run Code Online (Sandbox Code Playgroud)
短绒Unresolved attribute reference 'get_form_kwargs' for class 'object'在super()电话中提出了一个问题。这个问题 100% 正确,但对 mixin 没有帮助。我们有很多具有这种super()模式的mixin 。
我知道属性的解决方案,但不知道您可以为这些未定义的类属性声明类型的方法。例如:
class Mixin:
foo:str
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有任何类似的方法可以帮助 linter 识别 mixin。
谢谢!