1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 将数据隐藏起来就限制了类外部对数据的直接操作,然后类内应该提供相应的接口来允许类外部间接地操作数据,接口之上可以附加额外的逻辑来对数据的操作进行严格地控制:
>>> class Teacher: ... def __init__(self,name,age): ... self.__name=name ... self.__age=age ... def tell_info(self): ... print('姓名:%s,年龄:%s' %(self.__name,self.__age)) ... def set_info(self,name,age): ... if not isinstance(name,str): ... raise TypeError('姓名必须是字符串类型') ... if not isinstance(age,int): ... raise TypeError('年龄必须是整型') ... self.__name=name ... self.__age=age ... >>> >>> t=Teacher('lili',18) >>> t.set_info(‘LiLi','19') # 年龄不为整型,抛出异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 11, in set_info TypeError: 年龄必须是整型 >>> t.set_info('LiLi',19) # 名字为字符串类型,年龄为整形,可以正常设置 >>> t.tell_info() # 查看老师的信息 姓名:LiLi,年龄:19
|