python----slots属性安全类

问题:__slots__可以用于构造安全的类、如果一个类使用了__slots__那么它的属性就不在自由了。

下面举例说明:

  1、自由属性。

  class person(object):

    def __init__(self,name,age):

      self.Name=name

      self.Age=age

  if __name__==‘__main__':

    p=person('jianglex',100)

    p.ID=007;#由于没有使用slots所以属性是自由的,可以自由设置,就算设置前没有声明也没事。

  2、__slots__设置非自由属性

  class person(object):

    __slots__=('Name','Age')

    def __init__(self,name,age):

      self.Name=name#注意,__init__的执行在__slots__之后;所以就算在__init__方法里也是不能执行self.ID=007的。

      self.Age=age

  if__name__=='__main__':

    p=person('jiangle',100)

    p.ID=007#这里会报错,由于我们使用了__slots__来声明属性,所以属性再也不是自由的了。

      

原文地址:https://www.cnblogs.com/JiangLe/p/4916288.html