如何将 mypy 与派生类和方法调用一起使用?

2024-01-29

我正在与 mypy 作斗争,不明白我想要传递一个派生类,其中代码接受基类或任何派生类的实例,并在该传递的实例上调用方法。

My code:

from typing import Type
import abc

class Base(abc.ABC):
    @abc.abstractmethod
    def my_method(self):
        pass

class Derived(Base):
    def my_method(self):
        print("Derived")

def my_function(b: Type[Base]):
    b.my_method()  # line 14

d = Derived()
my_function(d)  # line 17

当我运行它时,它会打印“Derived”(如预期)。但 mypy 对此并不满意:

mcve.py:14:错误:“Base”的“my_method”参数太少

mcve.py:17: 错误:“my_function”的参数 1 具有不兼容的类型“Derived”;预期“类型[基础]”

我假设第 14 行错误是因为 mypy 没有看到第一个参数位于方法调用前面(base.),这可能是因为第17行的错误?

我如何让 mypy 理解这段代码?或者我在这里缺少什么?


Type如果你想通过则使用Base或一个子类Base作为一个论点。您打算通过instance这样的一类。

def my_function(b: Base):
    b.my_method()

第 14 行的错误是按字面意思理解你的类型提示,并认为你的意思是做类似的事情Base.my_method(x)而不是x.my_method().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 mypy 与派生类和方法调用一起使用? 的相关文章

随机推荐

  • PHP:如何在一篇文章中向多个设备发送 GCM 通知

    我是一名 Android 开发人员 目前使用 PHP 在 GCM 服务器端工作 从我的客户端 我将 gcm 响应令牌存储在一个数据库中 现在我想一次性向注册用户发送消息 我不知道该怎么做 我完全困惑了 我的简单 HTML 文件是
  • ASP.NET Core (.NET 5) + Angular 11 = 空项目上的构建错误

    If I create a new ASP NET Core Web API Angular project in Visual Studio using dotnet new angular it creates a NET 5 proj
  • XHTML 中所有有效的自关闭元素(由主要浏览器实现)有哪些?

    XHTML 中所有有效的自关闭元素 例如 由主要浏览器实现 有哪些 我知道 XHTML 在技术上允许任何元素自关闭 但我正在寻找所有主要浏览器支持的这些元素的列表 看http dusan fora si blog self ending t
  • 如何在Java中安全地访问数组线程?

    Java 中数组的操作是线程安全的吗 如果不是 如何在 Java 中安全地访问数组以进行读取和写入 使用多个线程更改数组时 不会出现无效状态 但是 如果某个线程编辑了数组中的值 则不能保证另一个线程会看到更改 非易失性变量也会出现类似的问题
  • 获取 a.foreach 不是函数错误

    我正在尝试使用 Angular js 构建一个多选列表 我收到一个奇怪的 TypeError a foreach 不是一个函数 我似乎不知道什么时候发生 js var myAppModule angular module multisele
  • IIS asp.net mvc 部分?上传文件

    鉴于以下代码非常通用 我希望有人能告诉我一些幕后发生的事情 HttpPost public ActionResult Load Guid regionID HttpPostedFileBase file if file ContentLen
  • 如何在另一个C++程序中运行一个C++程序?

    我有一个简单的 C 程序 它接受输入并输出一些字符串 像这样 game what kind of game type r for regular s for special r choose a number from 1 10 1 no
  • 角业力跑步者无限期挂起

    Windows 8 64 位 Node js 0 10 5 64 位 业力 0 8 5 我能够启动 karma 服务器 Chrome 浏览器打开 我将其定义为 karma 配置中的默认浏览器 当我进行 业力奔跑 时 问题就出现了 Chrom
  • 用于存储 RGB 字符串的枚举 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我以前从未使用过枚举 所以我发现它们非常令人困惑 我想存储大量 RGB 值 作为字符串 并且我认为枚举是最好的选择 而不是列出静态最终字符
  • 使用 LinqToCSV 将 CSV 写入 MemoryStream 不会返回任何数据

    我已经验证使用System Text Encoding ASCII GetString ms ToArray 我的内存流有预期的数据 但是 使用 LinqToCSV nuget 库不会生成我的 csv 文件 我没有收到任何错误或异常抛出 当
  • 多个“++”在变量和指针中工作

    这就是我认为的 操作员做 a a 1 after calculating this line a a 1 before calcuating this line 我正在尝试研究指针 我认为我误解了一些东西 int a 10 int arr
  • 使用rapidjson检索JSON字符串内的嵌套对象

    我需要检索 JSON 字符串内的嵌套对象 并且我正在尝试使用 rapidjson 来完成此操作 我发现的只是如何检索数组和基本类型 而不是子对象 我创建了以下给出错误的玩具示例 rapidjson Document document std
  • 从扩展更新 UIApplicationShortcutItem

    我正在为应用程序构建 Today Extension 它对于修改我的应用程序数据非常有用 但现在我的动态UIApplicationShortcutItems不同步 我无法访问UIApplication shared从我的分机 有没有办法要求
  • 如何使用 CSS 为多个图像设置不同的样式?

    我基本上是在设计一篇长文 其中散布着各种图像 我希望第一张图像 浮动 左 第二张图像 浮动 右 我知道我可以像这样设计图像 img float left 这使得每张图像都具有相同的风格 如何为每张图像设置不同的样式 我尝试将每个图像放在不同
  • 一个关于facebook评论插件的简单问题

    我正在努力解决一个非常简单的问题 Facebook 文档一如既往地没有给我足够的解释 我在我的网站上附加了一个 Facebook 评论插件 并使用 comment create 事件的回调 我可以获得刚刚创建的评论的信息 FB Event
  • jQuery 调用中的哈希符号

    作为一名务实的编码员 我往往会错过一些明显的事情 我想知道 有什么区别 loc loc 信息越多 关于 的来龙去脉就越好 loc is an 元素选择器 http api jquery com element selector 寻找
  • Flexjson 和 Dexguard/Proguard

    当涉及到 flexjson 库时 我在使用 dexguard 时遇到问题 尝试使用 JSONDeserializer 反序列化时 我不断收到以下错误 09 15 20 46 10 271 10901 11552 A art sart run
  • 如何在 iOS 图表中的 X 轴上添加字符串?

    在新版本中 我在创建一些图表时遇到了一些麻烦 以前的代码是 func setChart dataPoints String values Double var dataEntries BarChartDataEntry for i in 0
  • 从 sqlplus 调用存储过程

    如何从sqlplus调用存储过程 我有一个程序 Create or replace procedure testproc parameter1 in varachar2 parameter2 out varchar2 begin Do so
  • 如何将 mypy 与派生类和方法调用一起使用?

    我正在与 mypy 作斗争 不明白我想要传递一个派生类 其中代码接受基类或任何派生类的实例 并在该传递的实例上调用方法 My code from typing import Type import abc class Base abc AB