python class __slots__

来源:互联网 发布:阜宁县网络发言人平台 编辑:程序博客网 时间:2024/05/20 03:39

1,由于Python是动态语言,任何实例在运行过程中,都可以动态地添加属性,python中通过slots 来限制添加属性。
如下代码:

class Student(objetc):    __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 的目的是限制当前类所拥有的属性。
对于继承类的限制属性添加如下:

class Person(object):    __slots__ = ('name', 'gender')    def __init__(self, name, gender):        self.name = name        self.gender = genderclass Student(Person):    __slots__ = ('score',)    def __init__(self, name, gender, score):        super(Student, self).__init__(name, gender)        self.score = score
0 0
原创粉丝点击