0

这是一段我无法理解的代码:

class COWMeta(type):
    pass

class COWDictMeta(COWMeta):
    ....

我知道如何在 python 中创建一个新类:

class MyClass(BaseClass):
    ...

但正如手册所述,“类型”是功能。

type(...)模块
的函数 type(object) -> 对象的类型 type(name, bases, dict) -> 一个新类型 __builtin__

类如何从函数继承?那段代码是什么意思?

4

2 回答 2

4

type是python中的基本对象类型。像 python 中的许多对象类型一样,它充当创建新类型的构造函数,但以最简单的形式,它将返回现有对象的类型。然后它看起来像一个函数。例如,将此与int()和进行比较。list()

在 python 中,您可以创建类型,也称为元类,允许您在 Python 中执行各种强大而有趣的技巧。基于类定义type意味着您正在创建一个新的元类。

请参阅Python 中的元类是什么?有关什么是元类的深入答案。

于 2012-08-14T08:42:05.027 回答
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'>
于 2012-08-14T08:45:12.340 回答