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
操心,直到您知道您有数百万个实例,并且内存是一个问题