`
simohayha
  • 浏览: 1403224 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

关于类中slots属性的用法的疑问

阅读更多
__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


上面的代码就不会报异常,想问一下这是什么原因?
分享到:
评论
3 楼 向左走向右走 2012-08-19  
c.e=9
好像没有e这个属性
2 楼 simohayha 2007-02-28  
limodou 写道
我想是B中有__dict__,因为它没有使用__slots__,所以C把B中的__dict__给继承下来了。


谢谢你了,应该就是你说的这样了,代码这样写就会抛异常了

class B(object):
  __slots__='a'   
    a=23   
class C(B):   
    __slots__='b'   
    def __init__(self):   
        self.b=67   
c=C()   
c.e=9   
1 楼 limodou 2007-02-28  
我想是B中有__dict__,因为它没有使用__slots__,所以C把B中的__dict__给继承下来了。

相关推荐

    PYTHON学习教程资源:使用slots操作代码.docx

    本文主要讲解了 Python 中的类和实例绑定属性和方法的机制,以及使用 `__slots__` 限制实例的属性。 首先,我们定义了一个 `Student` 类,创建了一个实例 `s`,然后尝试给实例绑定一个属性 `name` 和一个方法 `set_...

    Python中__slots__属性介绍与基本使用方法

    在Python编程语言中,`__slots__`是一个特殊属性,用于优化类的内存使用和提高性能。当创建一个类的实例时,如果没有定义`__slots__`,Python会为每个实例创建一个`__dict__`字典来存储实例变量。然而,`__dict__`...

    Python中的__SLOTS__属性使用示例

    __setattr__方法中检查属性是否在__slots__列表中,如果不是,则抛出异常。__getattr__方法返回属性值的描述字符串。此外,类C的__slots__只声明了属性x和z,因此y属性不能被设置。 示例中通过实例化上述三个类,并...

    python3中使用__slots__限定实例属性操作分析

    下面我们将深入探讨`__slots__`的工作原理和使用方法。 通常,在Python中,当我们创建一个类的实例时,Python会在内存中为该实例创建一个字典(`__dict__`),用于存储实例的属性。这个字典会随着实例添加的属性...

    在Python中使用__slots__方法的详细教程

    __slots__的基本使用方法是在类定义中创建一个名为__slots__的变量,该变量是一个包含字符串的序列,每个字符串代表一个允许的属性名称。例如: ```python class Student(object): __slots__ = ('name', 'age') ``...

    Content Slots

    6. **作用域Slots**:在高级用例中,开发者可以使用作用域Slots传递数据给插入的组件,使组件能根据上下文动态调整。 7. **服务端渲染**:在服务端渲染的应用中,Content Slots有助于决定哪些内容需要预先渲染,...

    Python类中的魔法方法之 __slots__原理解析

    在Python编程语言中,`__slots__`是一个特殊的魔法方法,它允许程序员在定义类时预定义实例变量,从而优化内存使用。这个方法主要用于减少内存消耗,特别是在创建大量实例时,因为不再需要为每个实例创建单独的`__...

    深入浅析Vue中的slots/scoped slots

    Scoped Slots 需要在父组件中使用 `slot-scope`directive,例如 `<dx-li slot-scope="props"> {{ props.msg }} </dx-li>`。子组件可以通过 `this.$scopedSlots` 访问父组件传递的带有作用域的内容。 工作原理 下面...

    python中__slots__用法实例

    `__slots__`是Python中的一个特殊属性,它可以在类定义中定义以优化内存使用。当一个类定义了`__slots__`时,该类的实例将不再拥有内置的`__dict__`属性,而是使用更紧凑的数据结构来存储实例变量。 #### 2. `__...

    python中的__slots__使用示例

    2. 如果类继承自另一个类,并且父类中定义了__slots__,子类的实例只能使用父类__slots__中定义的属性,除非子类中也定义了自己的__slots__。 3. 在子类中定义__slots__时,如果需要包含父类的__slots__属性,子类的...

    通过实例了解python__slots__使用方法

    在Python编程语言中,`__slots__`是一个特殊属性,用于优化对象的内存使用和限制对象实例可添加的属性。本文将深入探讨`__slots__`的用途、工作原理以及如何正确使用它。 一、背景 Python以其动态特性和灵活性著称...

    用Python中的__slots__缓存资源以节省内存开销的方法

    当一个类使用了__slots__后,实例将不能有除了__slots__中定义的属性以外的其他属性(除非通过__dict__或__weakref__等特殊属性)。 下面是一个使用__slots__的简单例子: ```python class Image(object): __...

    vue Render中slots的使用的实例代码

    Vue Render 中 slots 的使用实例代码 在 Vue.js 中,slots 是一个非常重要的概念,它允许开发者在组件中插入自定义的内容。在 Vue 2.x 中,slots 的使用方式有所改变,本文将介绍 Vue Render 中 slots 的使用实例...

    PyPI 官网下载 | flake8_slots-0.1.3.tar.gz

    在Python中,使用`__slots__`特性可以优化对象内存使用,防止动态添加属性,提升性能。flake8_slots作为插件集成在flake8框架中,帮助开发者遵循良好的编程实践,确保有效地使用`__slots__`。 flake8_slots-0.1.3....

    python使用__slots__让你的代码更加节省内存

    总的来说,`__slots__`是Python中优化内存使用的一个工具,特别是对于创建大量实例且属性固定的类。同时,理解列表和字典的内存开销可以帮助我们在设计数据结构时做出更好的选择。在某些场景下,根据性能和内存需求...

Global site tag (gtag.js) - Google Analytics