2012-11-23 77 views
9

我是Python新手。我熟悉Java,C/C++和OCaml。我了解Lambda微积分和基本类型理论,因为我在大学学习了一门编程语言课程。Python类型系统 - 对象与类型

有了这些背景下,我想读这 - http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html

某处,他提到了这一点:

  • (类型 '对象')是(类型 '类型')
  • 的实例
  • (type'object')是没有对象的子类。
  • (type'type')是它自己的一个实例。
  • (type'type')是(类的子类 '对象')

我不能环绕此我的大脑差:

  • (类型 '对象')是(类型“类型”)
  • (类型“类型”)的实例是(类型“对象”)

什么喊来这里发生的事情的一个子类?我想听到的是关于这里究竟发生了什么以及事情是如何发生的深刻原因。请不要有浅薄的理由或类比。

回答

4

它正在专门讨论对象type。对于type,所有类型都从<type 'type'>继承。

我相信其他的说法只是指出<type 'type'>object;我从寻找进一步下跌想到了一个例子:

t = list.__class__ # <type 'type'> 
t.__bases__ # (<type 'object'>,) 
0

由于类型的概念是一样的类,你可以继承正常的面向对象的技术和一流的语法来定制它的类型。

而且因为类实际上是类型的实例,所以从类型的自定义子类创建类允许实现自定义类。

在新式的类:

  • 类型是产生用户定义的类的类。
  • 元类是类类的子类。
  • 类对象是类类的实例或其子类。
  • 实例对象是从一个类生成的。