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

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