如何解决如何使用 mypy 构建子类以进行输入
#main.py
class Runner(object):
...
def operation(self,arg: str) -> Runner:
self.attrib = 'something ' + arg
return self
...
现在我想分离许多这些 operation
方法,因为我的文件变得太大,所以我创建了一个新文件 subs.py
并将我的代码传输到混合:
#main.py
from subs import Mixin
class Runner(Mixin):
...
#subs.py
class Mixin(object):
...
def operation(self,arg: str) -> Runner:
self.attrib = 'something ' + arg
return self
Runner
类型对 subs.py
未知,如果我导入它,那么我将创建循环导入依赖项,我什至不认为它会起作用,所以我不确定正确的方法处理这个问题,假设 :class:Mixin
将仅被主类继承使用。
解决方法
一旦将方法移到类 Mixin
中,您不知道 operation
将返回 Runner
的实例。考虑:
class Foo(Bar,Mixin):
...
f = Foo()
f.operation() # Returns something that is a Bar and a Mixin,but not a Runner.
正确的类型提示是
def operation(self,arg: str) -> Mixin:
self.attrib = 'something ' + arg
return self
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。