微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 mypy 构建子类以进行输入

如何解决如何使用 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 举报,一经查实,本站将立刻删除。