我以为我意识到了这种关系:在Python中,一切都是一个对象,每个对象都有一个类型.那课怎么样?类是对象的蓝图,对象是类的实例.但我在一篇文章中读到,在Python中,类本身就是对象.我认为没有蓝图 - 它的类,对象就不可能存在.但是,如果类是一个对象,它是如何存在的?
type.__bases__ = (<class 'object'>,)
int.__bases__ = (<class 'object'>,)
str.__bases__ = (<class 'object'>,)
Run Code Online (Sandbox Code Playgroud)
那么,这个类object是每个对象的蓝图?
type(str) = <class ‘type’>
type(int) = <class ‘type’>
type(type) = <class ‘type’>
Run Code Online (Sandbox Code Playgroud)
那么,类type是其他类型的蓝图吗?
但这type是一个对象本身.我不明白这.我无法想象类是对象.
在Python中可以赋予名称的所有东西都是一个对象 - 包括函数,类和元类.每个对象都有一个关联的类型或类(这两个名称是同一个东西 - "类型"和"类"在Python 3中是相同的).类型本身又是一个对象,它本身就是一个相关的类型.类型的类型称为元类(当然,它同样可以称为元类型,但不使用后一个单词).您可以使用它type()来确定对象的类型.如果迭代地查询对象的类型,类型的类型等等type,通常在两个步骤之后总是会在某个时候得到类型:
type(3) --> int
type(int) --> type
type(type) --> type
Run Code Online (Sandbox Code Playgroud)
另一个例子,使用"meta-metaclasses":
class A(type):
pass
class B(type, metaclass=A):
pass
class C(metaclass=B):
pass
c = C()
type(c) --> C
type(C) --> B
type(B) --> A
type(A) --> type
type(type) --> type
Run Code Online (Sandbox Code Playgroud)
type类型本身并不矛盾type.
| 归档时间: |
|
| 查看次数: |
930 次 |
| 最近记录: |