gpt4 book ai didi

python - 在 python 中实例化一个元类

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:25 24 4
gpt4 key购买 nike

我用 python 写了一个继承自 type 的类。我认为这是一个类的唯一要求,以便被称为元类,但没有为它定义 __new__ 方法。但是在用这个新类作为元类实例化时,我得到了一个错误,说明如下:

TypeError: type.__new__() takes exactly 3 arguments (0 given)

以下是我的代码:

class a(type) :
pass
c= a()

现在,当处理类语句时,我假设正在调用 type__new__ 方法。这是因为 python 中所有类的默认元类都是 type

现在,当我实例化类 a 时,我假设它是一个元类,假设任何继承自 (type) 的类都是一个元类,是这和创建一个类一样吗?为什么这不会导致使用正确的参数调用 type.__new__

最佳答案

这不起作用:

class a(type) :
pass
c = a()

...出于同样的原因,这不起作用:

c = type()

最后,两者都做同样的事情。

要将它用作元类,请执行以下操作:

>>> class Class(metaclass=a):
... pass
...
>>> Class
<class '__main__.Class'>
>>> type(Class)
<class '__main__.a'>

您也可以像您尝试的那样直接实例化该类,但您必须提供正确的参数:

AnotherClass = type('AnotherClass', (), {})

YetAnotherClass = a('YetAnotherClass', (), {})

关于python - 在 python 中实例化一个元类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54158789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com