版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
介绍类的定义与实例化、构造器、类属性与实例属性自定义类CHAPTER701类的定义与实例化02构造器CONTENTS目
录03类属性与实例属性自定义类Python用class来定义一个类class类名:
"""类文档字符串"""
类的实现自定义类是一个合法的Python标识符,按照Python编码规范,类名的首字母要大写。基本原则是保证项目的代码规范一致性A
CB
类
名类的文档字符串位于类体最前面的、一个由三引号包括起来的字符串,作为类的帮助文档,可用类的__doc__属性来获取该字符串类的实现部分包括属性和方法的定义,类实现部分的每一条定义语句相对class关键字都必须有相同的缩进。自定义类类属性的定义将变量的定义移到类的内部,只需给出相应的变量名和初始值类的
定
义方法的定义语法与函数一样,也使用def关键字,相当于定义在类里的函数类的定义与实例化自定义类与类外的函数不同,类方法的第一个参数都是指向调用者实例的引用,在定义时一般都习惯用self作为参数名属性和方法统称为类的成员自定义类【例】下面是一个简单的自定义类01classMyFirstClass:02"""Asimpleexampleclass"""03state=1234504deffun(self):05return'HelloWorld'MyFirstClass类自定义类【例】下面是一个简单的自定义类01classMyFirstClass:02"""Asimpleexampleclass"""03state=1234504deffun(self):05return'HelloWorld'用“.”访问类成员自定义类>>>MyFirstClass.__doc__#返回类的文档字符串'Asimpleexampleclass'>>>c=MyFirstClass()#实例化对象>>>c.state12345>>>c.fun()HelloWorld实例化
c
对象自定义类>>>MyFirstClass.__doc__#返回类的文档字符串'Asimpleexampleclass'>>>c=MyFirstClass()#实例化对象>>>c.state12345>>>c.fun()HelloWorld无需
self
参数Python中的面向对象>>>classMyTestClass:
value=456
deffun1(self):
print("Myvalueis",self.value)#不能省略self直接访问value
deffun2(self):
fun1()#执行时将出现NameError>>>a=MyTestClass()>>>a.fun1()Myvalueis456>>>a.fun2()Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"<stdin>",line7,infun2NameError:name'fun1'isnotdefined
【例】
用“.”操作符,而不直接用成员名进行访问自定义类“__init__”方法可有参数,这些参数将在实例化时被提供或提供默认值0103创建一个最原始的对象该方法继承父类object
无需重写“__new__”只需重新实现“__init__”02进行对象的初始化
无需由用户显式调用“__new__”“__init__”“类的构造器”构造器自定义类>>>classStudent:
def__init__(self,name="无名氏"):
print("开始实例化一个Student对象,名为",name)>>>a=Student('张三')开始实例化一个Student对象,名为张三>>>b=Student()开始实例化一个Student对象,名为无名氏将值放类名后自定义类类属性与实例属性“类属性”在类内部的所有方法之外进行定义。例如,上一节的state就属于MyFirstClass的类属性“实例属性”由一个具体实例所独有,不同实例的实例属性间是完全独立,实例属性一般在构造器“__init__”方法里初始化自定义类类属性与实例属性类类的所有实例类
名实例名“静态成员”自定义类Python没有沿用这一说法,而是改用“类属性”来表述自定义类类属性与实例属性“类属性”在类内部的所有方法之外进行定义。例如,上一节的state就属于MyFirstClass的类属性“实例属性”由一个具体实例所独有,不同实例的实例属性间是完全独立,实例属性一般在构造器“__init__”方法里初始化自定义类实例属性一般在构造器“__init__”方法里面初始化如下>>>classCar:wheels=4#wheels是类属性def__init__(self,owner):#构造器方法self.owner=owner#owner是实例属性>>>a=Car('Mike')>>>b=Car('Tom')>>>a.owner,b.owner#通过实例访问实例属性('Mike','Tom')>>>a.wheels,b.wheels,Car.wheels#通过实例或类访问类属性(4,4,4)自定义类动态添加拥有类属性动态类型特性除了在类的内部进行定义都可以在使用时动态添加类属性和实例属性“类名.新的类属性名=初始值”动态添加类属性用“类的实例.新的实例属性名=初始值”添加属性添加实例属性自定义类该实例属性只属于相应的实例,类的其它实例没有实例属性>>>Car.brand='BYD'#增加一个新的类属性brand>>>a.brand,b.brand('BYD','BYD')>>>a.nickname='Rocket'#给实例a增加一个新的实例属性nickname>>>a.nickname'Rocket'>>>b.nickname#实例b并没有实例属性nickname,属于非法访问Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>AttributeError:'Car'objecthasnoattribute'nickname'自定义类属
性类属性实例属性属于类和该类实例化出来的所有实例它属于一个具体的实例所独有,对其修改不会影响到其它实例自定义类类类实例读
取修改类属性“.”自定义类为实例对象动态地添加了一个与类属性同名的实例属性,如果需要访问同名的类属性,就需用到名为“__class__”的特殊类属性,该属性将返回实例所属的类对象当类实例企图用“.”运算符直接修改类属性时自定义类【例】使用“__class__”的返回值间接修改类属性,实例如下>>>a.owner='Alice'#实例属性的修改不会影响其它实例>>>a.owner,b.owner('Alice','Tom')>>>Car.wheels=2#通过类修改类属性,修改值对所有实例可见>>>a.wheels,b.wheels,Car.wheels(2,2,2)>>>a.wheels=3#给实例a动态添加了一个同名的实例属性,不会影响类属性>>>a.wheels,b.wheels,Car.wheels(3,2,2)>>>a.wheels,a.__class__.wheels#分别访问同名的实例属性和类属性(3,2)自定义类类属性VS实例属性在实际使用中,尽量避免使用同名的类属性和实例属性自定义类该属性是一个字典对象,它保存了实例的所有其它实例属性名及其相应的值“__dict__”特殊实例属性“自动创建”自定义类>>>a.__dict__#a实例包含3个实例属性,后两个属性都是动态添加的{'owner':'Alice','wheels':3,'nickname':'Rocket'}>>> dela.wheels#删除a实例的wheels属性>>>a.__dict__#现在a实例只包含2个实例属性{'owner':'Alice','nickname':'Rocket'}>>>b.__dict__#b实例只包含一个实例属性{'owner':'Tom'}无需
self
参数自定义类【例】可以使用del关键词删除类属性或者实例属性,实例如下>>>a.__dict__#a实例包含3个实例属性,后两个属性都是动态添加的{'owner':'Alice','wheels':3,'nickname':'Rocket'}>>> dela.wheels#删除a实例的wheels属性>>>a.__dict__#现在a实例只包含2个实例属性{'owner':'Alice','nickname':'Rocket'}>>>b.__dict__#b实例只包含一个实例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川大学华西医院骨科现招聘项目制人员1人备考题库附答案详解(培优)
- 2026福建福州市城市多边合作中心招聘对外联络部工作人员2人备考题库含答案详解(满分必刷)
- 2026广东佛山市高明空港建设投资有限公司招聘第一期人员1人备考题库含答案详解(b卷)
- 2026湖南省交通规划勘察设计院股份有限公司社会招聘24人备考题库含答案详解(a卷)
- 2026重庆广播电视传媒集团股份公司所属企业招聘4人备考题库及答案详解(真题汇编)
- 2026四川成都双流国际机场股份有限公司招聘(急救医生岗)笔试备考试题及答案解析
- 道路交通安全承诺书5篇范文
- 艺术品收藏品保护承诺书(5篇)
- 工程按期完成进度承诺书范文4篇
- 2026广西北投资本投资集团有限公司招聘1人备考题库附答案详解(黄金题型)
- 第2课《让美德照亮幸福人生》第1框《做讲社会公德的好公民》-【中职专用】《职业道德与法治》同步课堂课件
- 市场营销策划(本)-形考任务一(第一 ~ 四章)-国开(CQ)-参考资料
- 2024年南昌市交通投资集团有限公司招聘笔试参考题库附带答案详解
- 2024杭州钱塘新区建设投资集团有限公司招聘笔试参考题库附带答案详解
- 2024新人教版初中英语单词表汇总(七-九年级)中考复习必背
- 新媒体广告投放策略策划书
- 诊所中药饮片清单
- 主题班会清明祭英烈
- 周瑜黄盖火攻水上兵谋
- 新版汉字听写大赛题库及答案
- 对外汉语-天气、冷热、季节
评论
0/150
提交评论