__slots__保存着实例变量的列表,并且在实例中保留空间以确定它们在实例中。一旦使用了__slots__,其它的实例变量就不能被赋值了。
文档中是这么说的:
引用
This class variable can be assigned a string, iterable, or sequence of strings with variable names used by instances. If defined in a new-style class, __slots__ reserves space for the declared variables and prevents the automatic creation of __dict__ and __weakref__ for each instance
也就是说
class C(object):
__slots__='b'
def __init__(self):
self.b=67
c=C()
c.e=9 #这里就会报异常
我有个问题,请看下面的代码
class B(object):
a=23
class C(B):
__slots__='b'
def __init__(self):
self.b=67
c=C()
c.e=9
上面的代码就不会报异常,想问一下这是什么原因?
分享到:
- 2007-02-28 10:07
- 浏览 4663
- 评论(3)
- 论坛回复 / 浏览 (2 / 5494)
- 查看更多
相关推荐
本文主要讲解了 Python 中的类和实例绑定属性和方法的机制,以及使用 `__slots__` 限制实例的属性。 首先,我们定义了一个 `Student` 类,创建了一个实例 `s`,然后尝试给实例绑定一个属性 `name` 和一个方法 `set_...
在Python编程语言中,`__slots__`是一个特殊属性,用于优化类的内存使用和提高性能。当创建一个类的实例时,如果没有定义`__slots__`,Python会为每个实例创建一个`__dict__`字典来存储实例变量。然而,`__dict__`...
__setattr__方法中检查属性是否在__slots__列表中,如果不是,则抛出异常。__getattr__方法返回属性值的描述字符串。此外,类C的__slots__只声明了属性x和z,因此y属性不能被设置。 示例中通过实例化上述三个类,并...
下面我们将深入探讨`__slots__`的工作原理和使用方法。 通常,在Python中,当我们创建一个类的实例时,Python会在内存中为该实例创建一个字典(`__dict__`),用于存储实例的属性。这个字典会随着实例添加的属性...
__slots__的基本使用方法是在类定义中创建一个名为__slots__的变量,该变量是一个包含字符串的序列,每个字符串代表一个允许的属性名称。例如: ```python class Student(object): __slots__ = ('name', 'age') ``...
6. **作用域Slots**:在高级用例中,开发者可以使用作用域Slots传递数据给插入的组件,使组件能根据上下文动态调整。 7. **服务端渲染**:在服务端渲染的应用中,Content Slots有助于决定哪些内容需要预先渲染,...
在Python编程语言中,`__slots__`是一个特殊的魔法方法,它允许程序员在定义类时预定义实例变量,从而优化内存使用。这个方法主要用于减少内存消耗,特别是在创建大量实例时,因为不再需要为每个实例创建单独的`__...
Scoped Slots 需要在父组件中使用 `slot-scope`directive,例如 `<dx-li slot-scope="props"> {{ props.msg }} </dx-li>`。子组件可以通过 `this.$scopedSlots` 访问父组件传递的带有作用域的内容。 工作原理 下面...
`__slots__`是Python中的一个特殊属性,它可以在类定义中定义以优化内存使用。当一个类定义了`__slots__`时,该类的实例将不再拥有内置的`__dict__`属性,而是使用更紧凑的数据结构来存储实例变量。 #### 2. `__...
2. 如果类继承自另一个类,并且父类中定义了__slots__,子类的实例只能使用父类__slots__中定义的属性,除非子类中也定义了自己的__slots__。 3. 在子类中定义__slots__时,如果需要包含父类的__slots__属性,子类的...
在Python编程语言中,`__slots__`是一个特殊属性,用于优化对象的内存使用和限制对象实例可添加的属性。本文将深入探讨`__slots__`的用途、工作原理以及如何正确使用它。 一、背景 Python以其动态特性和灵活性著称...
当一个类使用了__slots__后,实例将不能有除了__slots__中定义的属性以外的其他属性(除非通过__dict__或__weakref__等特殊属性)。 下面是一个使用__slots__的简单例子: ```python class Image(object): __...
Vue Render 中 slots 的使用实例代码 在 Vue.js 中,slots 是一个非常重要的概念,它允许开发者在组件中插入自定义的内容。在 Vue 2.x 中,slots 的使用方式有所改变,本文将介绍 Vue Render 中 slots 的使用实例...
在Python中,使用`__slots__`特性可以优化对象内存使用,防止动态添加属性,提升性能。flake8_slots作为插件集成在flake8框架中,帮助开发者遵循良好的编程实践,确保有效地使用`__slots__`。 flake8_slots-0.1.3....
总的来说,`__slots__`是Python中优化内存使用的一个工具,特别是对于创建大量实例且属性固定的类。同时,理解列表和字典的内存开销可以帮助我们在设计数据结构时做出更好的选择。在某些场景下,根据性能和内存需求...