美文网首页
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__属性

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