下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PYTHON学习教程资源:使用slots操作代码
正常情况下,当我们定义了一个class,创建了一
个class的实例后,我们可以给该实例绑定任何属
性和方法,这就是动态语言的灵活性。先定义
class:
classStudent(object):
pass
然后,尝试给实例绑定一个属性:
>>>s=Student0
>>>s.name='Michael'#动态给实例绑定一个属性
»>print(s.name)
Michael
还可以尝试给实例绑定一个方法:
»>defset_age(self,age):#定义一个函数作为实例方法
…self,age=age
»>fromtypesimportMethodType
»>s.setage=MethodType(set_age,s)#给实例绑定一个方法
»>s.set_age(25)#调用实例方法
»>s.age#测试结果
25
但是,给一个实例绑定的方法,对另一个实例是
不起作用的:
»>s2=Student()#创建新的实例
»>s2.set_age(25)#尝试调用方法
Traceback(mostrecentcalllast):
File,,<stdin>,\line1,in<module>
AttributeError:'Student'objecthasnoattribute?setage,
为了给所有实例都绑定方法,可以给class绑定方
法:
»>defset_score(self,score):
…self,score=score
»>Student,set一score=set_score
给class绑定方法后,所有实例均可调用:
>>>s.set_score(100)
>>>s.score
100
>>>s2.setscore(99)
>>>s2.score
99
通常情况下,上面的set_score方法可以直接定
义在class中,但动态绑定允许我们在程序运行的
过程中动态给class加上功能,这在静态语言中很
难实现。
使用—slots—
但是,如果我们想要限制实例的属性怎么办?比
如,只允许对Student实例添加name和age属性。
为了达到限制的目的,Python允许在定义class
的时候,定义一个特殊的_slots_变量,来限制
该class实例能添加的属性:
classStudent(object):
_slots_=('name','age')#用tuple定义允许绑定的属性名称
然后,我们试试:
»>s=Student()#创建新的实例
>>>s.name='Michael'#绑定属性‘name'
»>s.age=25#绑定属性'age'
»>s.score=99#绑定属性'score'
Traceback(mostrecentcalllast):
File”<sldin>〃,line1,in〈module)
AttributeError:*Student,objecthasnoattribute*score,
由于,score1没有被放到—slots_中,所以不能
绑定score属性,试图绑定score将得到
AttributeError的错误。
使用_slots_要注意,_slots_定义的属性仅对
当前类实例起作用,对继承的子类是不起作用的:
>>>classGraduateStudent(Student):
…pass
»>g=GraduateStudent()
»
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省绍兴市海亮重点名校2026届初三下学期第五次月考(一模)数学试题试卷含解析
- 孝感市市级名校2026年初三质量普查调研考试语文试题试卷含解析
- 云南省双柏县2025-2026学年初三下学期教学质量检测试题模拟考试英语试题含解析
- 江西省吉安市峡江县2025-2026学年初三网上学习周练英语试题试卷含解析
- 欺诈合同起诉状
- 电场中的功能关系及图像问题(高考物理一轮复习讲义)
- 2026年食品贮运与营销专业职业生涯规划
- 2026年饭店自助餐优惠活动方案
- 2026年拘留所反恐防暴应急演练方案
- 计算机基础教案 管理文件
- 充装站安全绩效考核制度
- 2025年高考贵州卷物理真题(试卷+解析)
- 2026年高速公路安全驾驶培训
- 特殊作业奖惩制度范本
- 2026年2026江苏省人民医院心血管内科打字员招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- GB/T 46871-2025二氧化碳捕集、运输和地质封存提高原油采收率的二氧化碳封存
- 大平层户型设计方案
- 2025年金融市场基础知识真题及答案
- GB/T 5563-2025橡胶和塑料软管及软管组合件静液压试验方法
- 云南省茶叶出口竞争力分析及提升对策研究
- 屠宰企业食品安全知识培训课件
评论
0/150
提交评论