美文网首页
44-python中 __slots__

44-python中 __slots__

作者: mingminy | 来源:发表于2017-12-22 13:54 被阅读0次

由于Python是动态语言,任何实例在运行期都可以动态地添加属性。

如果要限制添加的属性,例如,Student类只允许添加name、genderscore这3个属性,就可以利用Python的一个特殊的__slots__来实现。

顾名思义,__slots__是指一个类允许的属性列表:

class Student(object):

__slots__ = ('name', 'gender', 'score')

def __init__(self, name, gender, score):

self.name = name

self.gender = gender

self.score = score

现在,对实例进行操作:

>>> s = Student('Bob', 'male', 59)

>>> s.name = 'Tim' # OK

>>> s.score = 99 # OK

>>> s.grade = 'A'

Traceback (most recent call last):

...

AttributeError: 'Student' object has no attribute 'grade'

__slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。

相关文章

  • 44-python中 __slots__

    由于Python是动态语言,任何实例在运行期都可以动态地添加属性。 如果要限制添加的属性,例如,Student类只...

  • _slots_简介2-使用

    __slots__作用 类成员变量描述符 __slots__是一个元祖 类的实例只能拥有__slots__中定义的...

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

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

  • Python限制属性

    __slots__

  • Python 中__slots__属性

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

  • python中的__slots__使用

    如果我们想要限制实例的属性,Python允许在定义class的时候,定义一个特殊的slots变量,来限制该clas...

  • __slots__

    现在我们终于明白了,动态语言与静态语言的不同 动态语言:可以在运行的过程中,修改代码 静态语言:编译时已经确定好代...

  • __slots__

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

  • __slots__

    一个场景 我们发现,所有继承自object类的类的对象都有一个__dict__属性,这事实上耗费了大量内存(尤其是...

  • __slots__

    class Student(object):slots=('name','age') 用slots来定义只允许对S...

网友评论

      本文标题:44-python中 __slots__

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