热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在python3中,当type()返回除类之外的任何东西?

如何解决《在python3中,当type()返回除类之外的任何东西?》经验,为你挑选了1个好方法。

所以我正在浏览copy库的源代码,我发现了这个:

cls = type(x)

copier = _copy_dispatch.get(cls)
if copier:
    return copier(x)

try:
    issc = issubclass(cls, type)
except TypeError: # cls is not a class
    issc = False

重要的是cls = type(x)except TypeError: # cls is not a class.(如果他们帮忙,我会在中间留下一行).该except条款使我相信,有一些x针对type(x)不会再回来一类,但我想不出一个例子,这将是的情况.(我尝试print在条款中添加一个语句,看看我是否可以触发它无效).你能给我一个type()不退还课程的例子吗?



1> abarnert..:

如果你问的是办理登机手续copy.copy,那实际上没有必要.这是一个长期存在的错误,但这是一个无关紧要的问题,多年来没有人愿意修复.但巧合的是,它仅在11天前作为问题11572的一部分修复,这是一个伞形错误,旨在完成copy.py3.8模块的代码覆盖.

这里的根本原因可以追溯到Python 2.2中存在的一个真正的问题,直到2.x分支的某个地方(我猜到2.5,包括在内,但这是一个猜测) - 但修复程序直到3.4才添加,问题不复存在很久之后.


Python 2.x中不存在此检查.正如user2357112所追求的那样,它被添加为Python 3.4中问题11480的修复的一部分.copy.copy在具有自定义元类的类中破坏,并且需要修复,该修复是从中复制的copy.deepcopy,但包含了不再需要的更改.后来被删除deepcopy,但copy直到本月才坐下来.


由tripleee发现,最初的错误是#502085.

事实上,在2.2,它不仅可能issubclass(type(x), type)TypeError,它在野外实际发生的事情.

在Python 2.1和更早版本中(在PEP 252之前,扩展类型基本上可以在他们的类型槽中粘贴任何他们想要的东西.在2.2+中,这会破坏isinstanceissubclass.它们是为了提升TypeError而不是segfaulting,这已经足够了,因为谁是永远不会在类型插槽中粘贴非类型,对吧?原来的版本boost::python确实适合你.

下一个版本没有引起这个问题,大概不是每个人都立即升级(它需要重写代码的一部分,它不能生成与Python 2.1兼容的模块,以及2MB下载,认真吗?你认为我在224Kbps双ISDN还是其他什么东西?),所以这些异常是一件让人担心的事情.

(这只与老式和新式类相关 - 扩展类型实际上总是"新风格",甚至在此之前就已经存在了,我很确定在之前添加了对类型的检查3.0.)


虽然从技术上讲,我们就是这样,但class在Python文档中这个词是模棱两可的.有时a class是通过执行class语句或通过调用type构造函数(或调用其子类type)创建的.有时a classtype或者是子类的实例type,在这种情况下,内置类型类.

通过前一个定义,x = 1是一个type(x)不是类的例子.但是根据后一种定义,它是 - 而且显然是使用的定义issubclass.所以,这几乎是无关紧要的,除非你正在寻找一个惹恼别人的问题.


FWIW"SF 502085"似乎是指https://bugs.python.org/issue502085 ......也许这个bug跟踪器当时托管在Source Forge上?
推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
天涯s1_278
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有