PYTHON学习教程资源:访问限制操作代码练习.docx

上传人:lao****ou 文档编号:197342 上传时间:2023-05-16 格式:DOCX 页数:6 大小:17.89KB
下载 相关 举报
PYTHON学习教程资源:访问限制操作代码练习.docx_第1页
第1页 / 共6页
PYTHON学习教程资源:访问限制操作代码练习.docx_第2页
第2页 / 共6页
PYTHON学习教程资源:访问限制操作代码练习.docx_第3页
第3页 / 共6页
PYTHON学习教程资源:访问限制操作代码练习.docx_第4页
第4页 / 共6页
PYTHON学习教程资源:访问限制操作代码练习.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《PYTHON学习教程资源:访问限制操作代码练习.docx》由会员分享,可在线阅读,更多相关《PYTHON学习教程资源:访问限制操作代码练习.docx(6页珍藏版)》请在第一文库网上搜索。

1、PYTHON学习教程资源:访问限制操作代码练习在CIaSS内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面StUdent类的定义来看,外部代码还是可以自由地修改一个实例的name、SCore属性:bart=Student(,BartSimpson,59)bart.score59bart.score=99bart.score99如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线在PythOn中,实例的变量名如果以开头,就变成了一个私有变量(PriVate),只有内部可以访问,外部不能访问,所以,我们把StUdent

2、类改一改:c1assStudent(object):def_init_(se1f,name,score):se1f._name=namedefprint_score(se1f):print(,%s:%s,%(se1f._name,se1f._score)改完后,对于外部代码来说,没什么变动,但是已经无法从外部访问实例变量.name和实例变量.score了:bart=Student(,BartSimpso,59)bart._nameTraceback(mostrecentca111ast):Fi1ezzzz,1ine1,inAttributeError:,Student,objecthasnoa

3、ttribute,_name,这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。但是如果外部代码要获取name和score怎么办?可以给Student类增加get_name和get_score这样的方法:c1assStudent(object):defget_name(se1f):returnse1f,namedefget_score(se1f):returnse1f._score如果又要允许外部代码修改SCore怎么办?可以再给StUdent类增加set_score方法:c1assStudent(object):defset_score(se1f,scor

4、e):se1f._score=score你也许会问,原先那种直接通过bart.score=99也可以修改啊,为什么要定义一个方法大费周折?因为在方法中,可以对参数做检查,避免传入无效的参数:c1assStudent(object):defset_score(se1f,score):if0=scorebart.StudentnameBartSimpson,但是强烈建议你不要这么干,因为不同版本的Python解释器可能会把name改成不同的变量名。总的来说就是,Python本身没有任何机制阻止你干坏事,一切全靠自觉。最后注意下面的这种错误写法:bart=Student(,BartSimpson,5

5、9)bart.get_name()BartSimpson,bart.name二,NewName,#设置_name变量!bart._nameNewName,表面上看,外部代码“成功”地设置了变量,但实际上这个_name变量和c1ass内部的_name变量不是一个变量!内部的name变量已经被Python解释器自动改成了_Student_name,而外部代码给bart新增了一个_name变量。不信试试:bart.get_name()#get_name()内部返回se1f._name,BartSimpso,练习请把下面的StUdent对象的gender字段对外隐藏起来,用get_gender()和set_gender()代替,并检查参数有效性:#-*-coding:utf-8-*-#测试:bart=Student(,Bart,j,ma1e,)ifbart.get_gender()!=ma1e:Print(,测试失败!,)e1se:bart.set_gender(fema1e)ifbart.get_gender()!=fema1e:Print测试失败!,)e1se:Print(,测试成功!)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服