gpt4 book ai didi

python - 如何在没有 __dict__ 的情况下创建类对象

转载 作者:太空狗 更新时间:2023-10-30 02:45:17 25 4
gpt4 key购买 nike

class B(type):
__slots__ = ()

class A(metaclass=B):
pass

A.test = "test"

"A" 是元类 "B" 的实例,并且 "B" 定义了 __slots__ - 为什么我在 A 类有 __dict__ 吗?如何在没有 __dict__ 的情况下创建类对象?

最佳答案

你不能这样做;类总是有一个__dict__

您只能在 上使用__slots__ 来生成没有__dict__ 的实例,而不能在元类型上使用。您通常只会生成几个类,因此在元类上支持 __slots__ 没有太大意义。

不要使用 __slots__ 来防止设置属性。使用 __setattr__ 代替:

class NoAttributesClassMeta(type):
def __setattr__(cls, name, value):
if name not in cls.__dict__:
raise AttributeError("Cannot set attributes")
type.__setattr__(cls, name, value)

关于python - 如何在没有 __dict__ 的情况下创建类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221270/

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