Python:__slots__用法

#!/usr/bin/python3
"""
这里通过实例简明地展示了python中__slots__的用法
"""
import types

class Student:
    """
    __slots__中列出了该类的所有属性。给任何其他不存在于此数组里的属性赋值都会抛出异常,如下面的setNickname函数。
    """
    __slots__=['name','id','addr']
    
    def __init__(self,i,n,a):
        self.name=n
        self.id=i
        self.addr=a
    
    def setNickname(self,nn):
        """
        这里试图设置一个__slots__中没有的属性,调用此函数时会抛出异常。
        """
        self.nickname=nn
        
    def printInfo(self):
        print('ID\tName\tAddress')
        print('%s\t%s\t%s' % (self.id,self.name,self.addr))        

if __name__=='__main__':
    print('---START Test---')
    s=Student(1,'James','London')
    s.printInfo()
    s.setNickname('007')# Error Student类没有nickname属性
    print(s.nickname)


你可能感兴趣的:(python,__slots__)