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

Dam*_*aty 5 python class python-3.x

class B(type):
    __slots__ = ()

class A(metaclass=B):
    pass

A.test = "test"
Run Code Online (Sandbox Code Playgroud)

"A"是元类的实例"B""B"__slots__定义 - 为什么我__dict__在课堂上A?我如何在没有__dict__?

Mar*_*ers 5

你不可以做这个; 类总是有一个__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)
Run Code Online (Sandbox Code Playgroud)