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__?
你不可以做这个; 类总是有一个__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)