这是我无法理解的一段代码:
class COWMeta(type):
pass
class COWDictMeta(COWMeta):
....
我知道如何在python中创建一个新类:
class MyClass(BaseClass):
...
但正如手册所述,'键入'是功能。
型(...)
__builtin__
模块的功能
type(object) - >对象的类型类型(名称,基数,字典) - >新类型
一个类如何从函数继承?那段代码意味着什么?
答案 0 :(得分:4)
type
是python中的基本对象 type 。像python中的许多对象类型一样,它充当创建新类型的构造函数,但在它最简单的形式中它将返回现有对象的类型。然后看起来像一个函数。例如,将其与int()
和list()
进行比较。
在python中,您可以创建 new 类型,也称为元类,允许您在Python中执行各种强大而有趣的技巧。基于type
定义类定义意味着您正在创建一个新的元类。
请参阅What is a metaclass in Python?以获得有关哪些元类的深入答案。
答案 1 :(得分:2)
type
不是一个函数,例如:
def foo():
pass
是一个功能。它可以像函数一样调用(和Python中的许多其他对象一样),但它实际上是编码的作为一个类。 type
本身可以向您展示这种差异:
>>> type(type)
<class 'type'>
>>> type(foo)
<class 'function'>
文档将其称为“函数”,而不是因为如何实现,而是因为它通常是如何使用。这大致类似于itertools.permutations
,虽然文档未明确调用函数暗示为一个:
返回迭代中元素的连续r长度排列。
但是itertools.permutations
是作为一个类实现的:
>>> type(itertools.permutations)
<class 'type'>