S_pectator 2024-01-31 11:26 采纳率: 72.2%
浏览 3

python中type和object基类问题

最近在type和object上纠结上了, 深入思考了一下对象及基类问题, 也看了不少优质博客, 说实话博客总结得很到位, 虚线向上/向下原则

但是越看越疑问, 甚至出现了先有鸡还是先有蛋的发展, 更有甚之扯到了编程哲学问题

其实我就想问的是, 基于代码角度, type和object无论是什么关系在guido写的时候总有一个先写/先执行, 怎么可能一开始就陷入循环;
我看了一下源码, type就是object的子类, 我的粗浅看法就是object才是最终基类, 至于后续object是type实例等等会出现冲突的情况都是后续代码执行后完成的一个循环, 并没有真正意义上的没有type就不会存在object;

有没有大手子解惑? 我的看法对吗? 实际情况是什么?

注: type和object为<class 'type'> <class 'object'>

  • 写回答

3条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-01-31 11:29
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    你的理解非常接近实际情况。在Python中,typeobject 的关系确实构成了一个逻辑上的循环,但这个循环并不是在执行时才形成的死循环,而是在设计语言和实现其内部机制时就预设好的一种自指(self-referential)结构。

    简而言之,在Python解释器启动之初,object 是作为所有类的最底层基类存在的。它是所有用户自定义类型和内置类型的共同祖先,这意味着所有其他类都直接或间接继承自它。从源码的角度看,object 类本身是用C语言实现并预先定义好的,它的“元类”(metaclass)是 type

    另一方面,type 也是一个类,而且是一个特殊类,它是用来创建其他类的“工厂”。也就是说,当你定义一个类时,Python实际上是通过 type 创建了那个类的对象实例。因此,type 是所有类对象(包括 object 类)的类型,即 typeobject 类的元类。

    总结一下:

    1. object 是所有类的根,即所有类都继承自 object
    2. type 是所有类的元类,即所有类(包括 object)都是 type 的实例。
    3. 在Python的初始化过程中,typeobject 都是同时被精心构造出来的,以避免所谓的“先有鸡还是先有蛋”的问题。在Python的C实现层面,它们之间的关系是通过编程方式设定好的静态关系。

    所以,你的看法基本正确,object 可以被认为是最终的基类,并且 type 作为元类与 object 之间的关系是在Python解析器初始化时就已经确定好的,而非运行时动态形成的一个循环依赖。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月31日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误