美文网首页
Python 中__slots__属性

Python 中__slots__属性

作者: 爆炸的白菜君 | 来源:发表于2019-01-07 13:30 被阅读9次

因为Python是动态语言。属性和方法可以随便添加和删除。这是所有动态语言的优点也是缺点。
静态语言:编译的时候确定的代码在运行过程中不可修改
动态语言:可以在运行过程中修改代码

python就是动态语言。动态语言有不是特别严谨
__slots__就是用来决绝这个问题的。
为了达到限制的目的, Python允许在定义 class的时候,定义一个特殊的__slots__变量,来限制该 class实例能添加的属性:

class Person(object):
    __slots__ = ('name', 'age')

p = Person()

p.name = 'yhl'
print p.name

p.age = 17

print p.age
#会报错,因为\_\_slots\_\_已经规定了这个类所有可添加的属性
p.gender = 1

__slots__这个属性只对当前的类有用,对于继承这个类的子类并不适用。

相关文章

  • Python 中__slots__属性

    因为Python是动态语言。属性和方法可以随便添加和删除。这是所有动态语言的优点也是缺点。静态语言:编译的时候确定...

  • Python学习笔记09-面向对象高级编程

    __slots__属性 在python中class被实例化后仍然可以绑定新属性和方法,这就是动态语言的特性。 注意...

  • Python>面向对象高级编程

    1. __slots__ Python里能够随便给实例(instance)增加属性,为了达到限制属性的目的,可以...

  • Python - __slots__属性详解

    简介 __slots__允许我们声明并限定类成员,并拒绝类创建__dict__和__weakref__属性以节约内...

  • python __slots__ 限制属性

    Python 是动态语言,允许我们动态的增加属性和方法 同样也有办法限制属性的动态绑定 如上所示可以规定 clas...

  • 魔术方法、特殊方法

    __slots__ 默认情况下Python用一个字典来保存一个对象的实例属性,字典浪费了很多内存。Python不能...

  • Python进阶话题杂谈(四)__slots__

    __slots__是Python类中的一个非常重要的优化手段。使用了__slots__的类,其在内存占用、实例化以...

  • python下__slots__属性使用

    slots 限制了类的属性,我测试了一下,slots是限制了类里的成员变量,没有限制类里的类方法和类变量。还有一点...

  • 类的__slots__属性

    为什么有__slots__属性? 默认情况下,python对象队象的每个实例(instance)都会有一个字典来存...

  • __slots__

    __slots__变量,来限制class实例能添加的属性 例:

网友评论

      本文标题:Python 中__slots__属性

      本文链接:https://www.haomeiwen.com/subject/tsxurqtx.html