Python 我不知道';我不知道如何让插槽工作

Python 我不知道';我不知道如何让插槽工作,python,Python,这段代码怎么会为我运行 class Foo(): __slots__ = [] def __init__(self): self.should_not_work = "or does it?" print "This code does not run,",self.should_not_work Foo() 我认为插槽是一种限制。我正在运行Python2.6.6。这种\uuuuuuuuuuuuuuuuu>机制适用于新样式的类。您应该从对象继承

这段代码怎么会为我运行

class Foo():
    __slots__ = []
    def __init__(self):
        self.should_not_work = "or does it?"
        print "This code does not run,",self.should_not_work

Foo()

我认为插槽是一种限制。我正在运行Python2.6.6。

这种
\uuuuuuuuuuuuuuuuu>机制适用于新样式的类。您应该从
对象继承

将类声明更改为

class Foo(object):
  # etc...

\uuuuu slots\uuuu
提供了内存使用的小优化,因为它可以防止分配
\uuuuuu dict\uuuuu
来存储实例的属性。如果您有大量实例,这可能很有用

您所说的限制主要是其实现方式的意外副作用。特别是,如果您的类继承自一个基类,而该基类没有
\u dict\u
(例如
对象
),则它只会停止创建
\u dict\u
,即使这样,它也不会停止在任何子类中分配
\u dict\u
,除非它们也定义了
\u插槽
。它不是一种安全机制,所以最好不要尝试使用它

所有旧式类都会自动获取
\uuuu dict\uuu
,因此
\uuu slots\uuuu
没有任何效果。如果您从
对象继承
,您将获得想要的效果,但基本上不必为
\uuuuu插槽\uuuuuuuuuu
操心,直到您知道您有数百万个实例,并且内存是一个问题