PyTips 0x18 - 类与元类的深度挖掘 I
副标题[/!--empirenews.page--]
上一篇介绍了 Python 枚举类型的标准库,除了考虑到其实用性,还有一个重要的原因是其实现过程是一个非常好的学习、理解 Python 类与元类的例子。因此接下来两篇就以此为例,深入挖掘 Python 中类与元类背后的机制。 翻开任何一本 Python 教程,你一定可以在某个位置看到下面这两句话:
虽然在上面两句话的语境中,对象(Object)的含义可能稍有不同,但可以肯定的是对象在 Python 中具有非常重要的意义,也是我们接下来将要讨论的所有内容的基础。那么,对象到底是什么? 对象(Object)
港台将 Object 翻译为“物件”,可以将其看作是一个盛有数据的盒子,只不过除了纯粹的数据之外还有其它有用的属性信息,在 Python 中,所有的对象都具有 +---------------+ | ? ? ? ? ? ? ? | | Python Object | | ? ? ? ? ? ? ? | +------+--------+ | ID ? | ? ? ? ?| +---------------+ | Type | ? ? ? ?| +---------------+ | Value| ? ? ? ?| +---------------+ 其中 def who(obj): ? ?print(id(obj),type(obj)) who(1) who(None) who(who) 4515088368 <class 'int'> 4514812344 <class 'NoneType'> 4542646064 <class 'function'> 对象作为 Python 中的基本单位,可以被创建、命名或删除。 Python 中一般不需要手动删除对象,其垃圾回收机制会自动处理不再使用的对象,当然如果需要,也可以使用 接下来我们重点来看如何创建一个对象。 对于一些 Python 内置类型的对象,通常可以使用特定的语法生成,例如数字直接使用阿拉伯数字字面量,字符串使用引号 类与实例既然说 Python 是面向对象编程语言,也就允许用户自己创建对象,通常使用 class A: ? ?passa = A() who(A) who(a) 140477703944616 <class 'type'> 4542635424 <class '__main__.A'> 上面的例子中
|