美文网首页
python __slots__ 限制属性

python __slots__ 限制属性

作者: wangtieshan | 来源:发表于2017-08-29 16:25 被阅读0次
    Python 是动态语言,允许我们动态的增加属性和方法
    
    class Student(object):
        pass
        
    s = Student()
    
    s.name = "LiLei"
    
    print(s.name)
    
    >>> LiLei
    
    同样也有办法限制属性的动态绑定
    
    class Teacher(object):
        # 用tuple定义允许绑定的属性名称,但是此限制对子类不起作用
        __slots__ = ('name', 'age') 
    
    
    
    如上所示可以规定 class Teacher 只可以绑定 nameage 两个属性
    t = Teacher()
    
    # 此处不能再添加属性
    t.height = 1
    
    >>> AttributeError: 'Teacher' object has no attribute 'height'
    
    
    

    但是 slots 对子类是不起作用的

    
    class MiddleTeacher(object):
        pass
    
    s = MiddleTeacher()
    
    s.height = 1
    
    print(s.height)
    
    >>> 1
    
    

    相关文章

      网友评论

          本文标题:python __slots__ 限制属性

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