首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MyPy给出了“不兼容的类型"auto";当使用auto()和从字符串继承的枚举时,应出现" str”“错误

问题描述: MyPy给出了“不兼容的类型"auto";当使用auto()和从字符串继承的枚举时,应出现" str”“错误。

回答: 这个错误是由于使用了auto()和从字符串继承的枚举时导致的类型不兼容。在Python中,枚举是一种特殊的数据类型,用于定义一组命名的常量。在枚举中,可以使用auto()来自动分配值给枚举成员,而从字符串继承的枚举则是指枚举成员的值是字符串。

然而,auto()和从字符串继承的枚举在类型上是不兼容的。auto()会自动分配一个整数值给枚举成员,而从字符串继承的枚举成员的值是字符串类型。因此,当使用auto()和从字符串继承的枚举时,就会出现类型不兼容的错误。

解决这个问题的方法是,要么使用auto(),要么使用从字符串继承的枚举,不能同时使用两者。如果需要使用自动分配值的功能,可以考虑使用auto(),如果需要使用字符串类型的值,可以考虑使用从字符串继承的枚举。

腾讯云相关产品推荐: 腾讯云提供了丰富的云计算产品和服务,以下是一些相关产品的介绍和链接地址:

  1. 云服务器(CVM):腾讯云的云服务器产品,提供弹性计算能力,适用于各种应用场景。详情请参考:云服务器产品介绍
  2. 云数据库 MySQL 版(CDB):腾讯云的云数据库产品,提供高可用、可扩展的 MySQL 数据库服务。详情请参考:云数据库 MySQL 版产品介绍
  3. 人工智能平台(AI Lab):腾讯云的人工智能平台,提供丰富的人工智能服务和工具,帮助开发者构建智能应用。详情请参考:人工智能平台产品介绍

请注意,以上推荐的产品仅为示例,腾讯云还提供了更多丰富的云计算产品和服务,具体可根据实际需求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SqlAlchemy 2.0 中文文档(三十一)

还包括访问 User.id User.name 类级属性,如上面的 select() 语句中所示,它们与 SQL 表达式行为兼容,这是 InstrumentedAttribute 属性描述符类派生...(50), nullable=False) other_name: Mapped[Optional[str]] = Column(String(50)) 类型是非可选,这意味着MyClass...它还包括访问 User.id User.name 类级属性,正如它们在上面的 select() 语句中那样,它们与 SQL 表达式行为兼容,这是 InstrumentedAttribute 属性描述符类派生...(50), nullable=False) other_name: Mapped[Optional[str]] = Column(String(50)) 类型是非可选,这意味着 MyClass...(50), nullable=False) other_name: Mapped[Optional[str]] = Column(String(50)) 类型为非可选,这意味着MyClass

13620

【笔记】《深入理解C++11》(上)

, POD 库编程: 内联命名空间, 继承构造, 右值引用 C++11标准设计准则: 在稳定性兼容性之间抉择: auto, using, nullptr 用库而非扩展语言语法来实现特性: std::..., 所以发生冲突时候应该显式声明构造函数来因此冲突函数 派生类是虚继承了基类, 不能使用继承构造函数 一旦使用继承构造函数(用using Base::Base;)暴露出来, 自身默认构造函数就和之前隐藏规则一样...POD需要满足以下条件: 平凡(Plain)限制: 与memset兼容默认构造析构函数 与memcpy兼容拷贝, 移动, 赋值, 移动赋值函数 包含虚函数虚基类 标准布局(Old)限制: 所有非静态成员有相同访问权限...4 新手易学, 老兵易用 auto auto是静态类型推导, 必须被初始化 auto本质上是一个类型占位符, 在编译时候推导出类型然后以类似字面替换方式进行使用 autocv限制符(cv-qualifier...而且由于其本质是常量数值原因, enum成员总是可以被隐式转换为整型, 这很容易导致比较两个不同枚举名称出现错误结果 C++11之前会通过类结构将枚举封装, 并建立新转换比较函数覆盖原先操作

1.8K20

终极 C++避坑指南

%s来匹配 枚举 枚举类型原本是用于解决固定范围取值类型表示,但由于在 C 语言中被定义为了整型类型一种语法糖,导致枚举类型使用出现了一些问题。...这样的话不仅浪费空间,还会出现二义性问题,例如d.a1到底是指B继承a1还是C里继承呢? C++引入虚拟继承概念就是为了解决这一问题。...出于对 C 语言兼容、以及上一节所介绍 C++希望将“语言”类型”解耦设计理念目的,在 C++中,字符串并没有映射为std::string类型,而是保留 C 语言当中处理方式。...但是,更多场景下,我们都会使用std::string类型来保存处理字符串,因为它功能更强大,使用更方便。得益于隐式构造,我们可以把一个字符串常量轻松转化为std::string类型来处理。...因此,如果我们char、signed char、unsigned char类型取地址,一定要考虑会不会被识别为字符串

2.1K20

让你 Python 静态起来

Django model Protocol 自定义类型 普通用法类 型自定义 辅助函数 typing-extensions 实例:简化枚举类型 工程技巧 避免循环引用 mypy 再让我们看看那个例子...所以,如果 Python 能够 “静态” 一些,将会给我们带来几个明显增益: 大幅度提升代码可读性 能够将参数传递 类型错误 扼杀在摇(biān)篮(mǎ)中 能够最大程度利用 IDE 提供代码提示...我们可以对任何变量进行类型注解,无论是赋值之前还是函数传参返回 # 我们可以类、模块、函数 `__annotations__` 变量中获取这些注解 nine_realms: List[str] =...原则上这里就只能输入字符串 "red" "blue" "yellow",某些简单场景下,我们不用额外定义枚举类型。...mypy mypy 原来是一个兼容大部分 Python 语法静态类型 Python 发行版,后来在官方受到启发,并加入类型注解之后,mypy 已经演化成了一个静态类型检查器,我们可以通过 pip 来安装

92960

流畅 Python 第二版(GPT 重译)(四)

逐渐类型系统: 是可选 默认情况下,类型检查器不应对没有类型提示代码发出警告。相反,无法确定对象类型类型检查器会假定Any类型。Any类型被认为与所有其他类型兼容。...② Mypy 报告了问题:“alert_duck"第 1 个参数类型兼容:“Bird”;预期是"Duck”。...③ 我在if条件中使用了海象操作符:=。它将unicodedata.name()调用结果赋name,整个表达式值就是该结果。结果为'',为假值,index不会被更新。...⑥ Mypy 标记这行是因为display_wrong与updatedisplay参数中类型提示兼容。...另一方面,需要处理float,提供一个接受int参数回调是类型错误

31810

CCPP中auto关键字对比分析

编程通常需要把表达式值式赋变量,这就要求在声明变量清楚知道表达式类型,C++11新标准引入了auto 类型说明符,让编译器去分析表达式类型。...= 0, pi = 3, 14; //错误:szpi类型不一致 autodecltype 作用有点相似,都可以推断某个表达式具体类型,当我们希望表达式值推断出要定义变量类型...//输入中读取一行赋值str1 //auto 是一个类型说明符,通过变量初始值来判断变量类型 for (auto &c : str) //对于字符串...先 键盘读取一行字符串,然后使用范围for语句对其进行处理,在范围for语句中使用auto关键字推断变量c数据类型,因为要改变字符串字符,所以将循环变量C定义为引用类型,然后使用for循环依次处理字符串...str字符,将其修改为字符‘X’,在使用下标处理字符串字符是,我们需要知道字符串长度,c++中size()函数用于返回字符串长度,即:字符串中字符个数,类似于C语言中strlen,字符串下标

81520

C++11新特性学习笔记

终端:g++ xxx.cpp -std=c++11 类型推导 auto auto自动类型推导,用于初始化表达式中推断出变量数据类型。...因此,在C语言中,可以在定义局部变量省略auto关键字,直接使用int或其他数据类型。 C++中auto类型推导关键字,用于自动推导变量类型,可以简化代码并且提高代码可读性。...,或者派生类是基类中虚继承,那么不能继承构造函数 l 一旦使用继承构造函数,编译器不会再为派生类生成默认构造函数 4.2 委托构造 继承构造函数类似,委托构造函数也是C++11中对C++构造函数一项改进...类其它几类特殊成员函数也默认构造函数一样,存在用户自定义特殊成员函数,编译器将不会隐式自动生成默认特殊成员函数,而需要程序员手动编写,加大了程序员工作量。...unique_ptr指针本身生命周期:unique_ptr指针创建开始,直到离开作用域。 离开作用域,若其指向对象,则将其所指对象销毁(默认使用delete操作符,用户可指定其他操作)。

2.2K20

C++11新特性学习笔记

终端:g++ xxx.cpp -std=c++11 类型推导 auto auto自动类型推导,用于初始化表达式中推断出变量数据类型。...因此,在C语言中,可以在定义局部变量省略auto关键字,直接使用int或其他数据类型。 C++中auto类型推导关键字,用于自动推导变量类型,可以简化代码并且提高代码可读性。...,或者派生类是基类中虚继承,那么不能继承构造函数 l 一旦使用继承构造函数,编译器不会再为派生类生成默认构造函数 4.2 委托构造 继承构造函数类似,委托构造函数也是C++11中对C++构造函数一项改进...类其它几类特殊成员函数也默认构造函数一样,存在用户自定义特殊成员函数,编译器将不会隐式自动生成默认特殊成员函数,而需要程序员手动编写,加大了程序员工作量。...unique_ptr指针本身生命周期:unique_ptr指针创建开始,直到离开作用域。 离开作用域,若其指向对象,则将其所指对象销毁(默认使用delete操作符,用户可指定其他操作)。

2K20

c++17好用新特性总结

前言 C++11开始,标志着c++复兴和现代C++开端。尽管有各种新语言层出穷,但涉及性能系统层面c++仍然是首选,地位无可撼动。...inline变量出现后,我们可以直接将全局变量定义在头文件中,而不用担心出现redefine错误信息。...std::string_view对字符串不具有所有权,且兼容std::stringconst char*两种类型。...c++17之前,我们处理只读字符串往往使用const std::string&,std::string有两点性能优势: 兼容两种字符串类型,减少类型转换内存分配。...总结一下,c++17新增三种类型c++带来了更现代更安全类型系统,它们对应使用场景是: std::any适用于之前使用void*作为通用类型场景。

3K10

使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!

首次发起提议,我们有两个主要考虑:虽然 Mypy 在 2012 年 PyCon 芬兰大会上首次亮相,并在 2015 年初发布了兼容 PEP-484 版本,但它仍然是一个相当新工具——至少对我们来说是这样...外部库缺乏类型注解最重要痛点是,我们引入大多数第三方 Python 库要么是无类型,要么兼容 PEP-561。在实践中,这意味着对这些外部库引用会被解析为兼容,这会大大削弱类型覆盖率。...(装饰器另一个问题是我前面提过@functools.lru_cache :由于装饰器最终定义了一个全新函数,所以如果你不正确地注解代码,就可能会出现严重而令人惊讶错误。)...我对循环导入也有类似的感觉——由于要导入类型作为注解使用,这就可能导致出现本可避免循环导入(这也是 Zulip 团队强调一个痛点)。...GitHub 上问题搜索如何解决某个类型问题,我经常会找到 Mypy GitHub Issues (比 Stack Overflow 还多)。

89220

流畅 Python 第二版(GPT 重译)(七)

⑥ loaded委托bool。¹⁴ ⑦ 总是可以以这种方式调用register,当你需要注册一个你维护但符合接口,这样做是很有用。...提示 如果您正在使用外部类型检查器,那么显式isinstance检查有一个优点:您编写一个条件为isinstance(o, MyType)if语句,那么 Mypy 可以推断在if块内,o对象类型与...这个导入会导致类型提示被存储为字符串,而不会在导入时被评估,函数定义被评估。...我将继续关注 Mypy 问题#3186,期待这个传奇下一章有一个让静态类型类型兼容美好结局——因为它们应该是兼容。 ¹ 设计模式:可复用面向对象软件元素,“介绍”,p. 18。...¹⁴ 避免具体类继承 具体类进行子类化比 ABC mixin 进行子类化更危险,因为具体类实例通常具有内部状态,您覆盖依赖于该状态方法,很容易破坏该状态。

13110

mypy 这个工具,让Python类型提示变得非常实用

mypy 是 Python 中静态类型检查器。写完带有类型提示代码之后,先别运行行,用 mypy 命令来检查下你代码,如果有错误,会提示你,这让 Python 类型提示有了真正作用。...后续开发过程中可以强制 mypy 检查无误后才能上线,借此提高代码可读性可维护性。 嗯,很实用,不是吗?下面分享一下如何使用 mypy。...{ name }') x: str = 'xxx' y: int = "yyy" #这里应该提示有问题 greeting(x) greeting(y) #这里应该提示有问题 代码我已经指出了两处错误...如果希望检查某一行,可以在注释上加上"# type: ignore": y: int = "yyy" # type: ignore mypy 具有强大且易于使用类型系统,具有很多优秀特性,例如类型推断...exclude 忽略检查文件名、目录名路径 ignore_missing_imports 禁止有关无法解析导入错误消息。

1.3K30

Python 进阶指南(编程轻松进阶):十一、注释、文档字符串类型提示

文档字符串提供了第二个关键好处,因为它们将文档集成到了源代码中。当你编写独立于代码文档,你可能会完全忘记它。相反,您将文档字符串放在模块、类函数顶部,信息仍然易于查看更新。...您赋值或传递错误类型参数,静态类型语言会发出早期警告。 Python 类型提示提供可选静态类型。...第一次阅读,有些错误信息可能很难理解。Mypy 可以报告大量可能错误,这里无法一一列举。找出错误含义最简单方法是在网上搜索。...在这种情况下,您可以搜索类似“赋值中 Mypy 兼容类型内容 每次修改代码从命令行运行 Mypy 是相当低效。为了更好地使用类型检查器,您需要配置您 IDE 或文本编辑器在后台运行它。...即便如此,静态类型检查工具在源代码运行时使用类型提示来分析源代码。类型检查器,比如 Mypy,可以确保您不会将无效值赋传递给函数变量。通过防止一大类错误,这可以节省您时间精力。

91130

C++缺陷与思考(上)

分析思考 之所以C数组会出现这种奇怪现象,我猜测,作者考虑是数组实际使用场景,是经常会进行切段截取,也就是说,一个数组类型并不总是完全整体使用,我们可能更多时候用是其中一段。...但C++中格式化字符串可以说完全就是C那一套,根本没有任何扩展。换句话说,除了基本数据类型0结尾字符串以外,其他任何类型都没有用于匹配格式符。...[32];sprintf(buf, "str=%s", str.c_str()); 由于str出现了'\0',如果用%s格式符来匹配的话,会在0位置截断,也就是说buf其实只获取到了str第一个...%s来匹配 枚举 枚举类型原本是用于解决固定范围取值类型表示,但由于在C语言中被定义为了整型类型一种语法糖,导致枚举类型使用出现了一些问题。...在GetAnObj函数内部,t是一个局部变量,局部变量生命周期是创建到当前代码块结束,也就是说,GetAnObj函数结束,这个t一定会被释放掉。

1.5K50

深入理解 Python 类型提示

(这些虚拟机不是模仿整个操作系统,只是简化 CPU 执行环境) CPython 编译程序时,如果指定数据类型,它如何知道变量类型呢?答案是它不知道,它只知道变量是对象。...要记住在运行时不检查类型。如果尝试在兼容类型上运行方法,将只会出现问题。例如尝试对字典切片或字符串中弹出值。...在持续集成管道中测试管道中包含 mypy 是很有意义继承开发环境中类型提示 使用类型提示最大好处之一是,你可以在 IDE 中会获得和静态语言同样自动补全功能。...() 复制代码 巧妙是,现在我们添加了类型,当我们调用类方法,我们可以看到发生了什么: 开始使用类型提示 mypy 有一些关于开发一个代码库很好建议: 1....: 首先,如果你在使用除了字符串,整形,布尔其他 Python 基本类型,你需要导入类型模块。

1.1K30

python类型检测最终指南--Typing使用

else部分,计算1 +“2”,因为类型不一致所以,会产生一个类型错误。...,程序不会出现错误,此时可以使用类型检查模块通过提示内容确定是否类型输入正确,如mypy。...$ mypy headline.py $ 如果传入一个字符串width="full",再次运行mypy出现一下错误。...所以向自己代码添加类型提示,应该使用注释还是类型注释?简而言之:尽可能使用注释,必要使用类型注释。 注释提供了更清晰语法,使类型信息更接近您代码。...子类对应于子类型,因此可以在任何需要玩家地方使用HumanPlayer。 子类超类重新实现方法类型注释必须匹配。有关示例,请参阅HumanPlayer.play_card()。

4.7K10

可维护Python代码库7条规则

就像单元测试一样,静态类型检查增加了对代码正确性信心。 当你开始使用mypy,或者当你尝试将一个未类型代码库转换为类型代码库,你会遇到很多bug。...然而,在规则 2 中建议使用 mypy,它会兼容重载[10]。 可以尝试用组合[11](表示 "有" 关系)代替继承(表示 "是" 关系)。...一个类至少实现了接口中所有方法并具有所有属性类型检查程序自动将其视为一个子类型。...然而或许可以面向继承范例中移除大多数子类,并将它们浓缩为单个类;然后通过将每个实例引用到其他对象来实现自定义行为。这就自然而然地引出了单一责任原则[15]。 继承是罪过吗?...然而,T是一个可变类型(如list或dictionary),这个方法似乎不起作用;它不能处理内部可变性。

25430

Java 异常之 RuntimeExceptionException区别

如果处理,程序将出现编译错误。 RuntimeException不用try catch捕捉将会导致程序运行中断,若用则不会中断。...非运行时异常是RuntimeException以外异常,类型上都属于Exception类及其子类,是受检异常。非运行时异常必须进行处理(捕获或向上抛出),如果处理,程序将出现编译错误。...RuntimeException概念: Exception:在程序中必须使用try…catch进行处理。...虽然RuntimeException异常可以不使用try…catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码最好使用try…catch...:继承IllegalArgumentException,字符串转换为数字出现

84420

java基础(十):IO技术流

,减少了读写次数,从而提高了效率 创建这两个缓冲流对象,会创建了内部缓冲数组,缺省使用32字节大小缓冲区....读取数据,数据按块读入缓冲区,其后读操作则直接访问缓冲区 写入数据,首先写入缓冲区,缓冲区满,其中数据写入所连接输出流。...(str); 打印流 PrintStream PrintStream提供了一系列print()println(),可以实现将基本数据类型格式化成字符串输出。...PrintWriter方法也抛出IOException 复制文件可以使用PrintWriter代替BufferedWriter完成,更简单 字节/字符数组/字符串流 ByteArrayInputStream...(敏感)序列化,或希望出现递归序列 为属性添加transient关键字(完成排除在序列化之外) 自定义序列化(不仅可以决定哪些属性参与序列化,还可以定义属性具体如何序列化) 序列化版本不兼容 修改了实例属性后

68520
领券