




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机编程导论,课程建设组 编著,2014.11,为了解决大型软件设计危机,在20世纪80年代提出了面向对象程序设计(object oriented programming, OOP)。面向对象程序设计是一种新的编程模式,这种编程模式的中心不再是程序的逻辑流程,而是软件或程序中的对象以及对象之间的关系。面向对象程序设计是针对大型软件的设计而提出的,它能使功能相对独立,能很好地做到代码重用,能使软件易于维护。,【问题8-1】定义一个类代表三角形,类中含三条边、求周长的函数,求面积的函数。然后用这个类生成一个等边三角形,一个直角三角形,依次求其周长及面积。 程序: #Ques8_1.py,clas
2、s Triangle: def _init_(self, x, y, z): self.a=x self.b=y self.c=z def area(self): s=(self.a+self.b+self.c)/2 return (s*(s-self.a)*(s-self.b)*(s-self.c)*(1.0/2) def perimeter(self): return self.a+self.b+self.c,#主程序 t1=Triangle(6, 6, 6) #等边三角形是t1,t1也称对象 t2=Triangle(3, 4, 5) print 等边三角形的三条边:, t1.a, t1.
3、b, t1.c print 等边三角形的周长:, t1.perimeter() print 等边三角形的面积:, t1.area() print 直角三角形的三条边:, t2.a, t2.b, t2.c print 直角三角形的周长:, t2.perimeter() print 直角三角形的面积:,t2.area(),程序运行结果: 等边三角形的三条边: 6 6 6 等边三角形的周长: 18 等边三角形的面积: 15.588457268119896 直角三角形的三条边: 3 4 5 直角三角形的周长: 12 直角三角形的面积: 6.0,8.2.1 类和对象 创建类时用变量表示属性称为成员变量或
4、成员属性,用函数表示方法称为成员函数或成员方法,成员属性和成员方法都称为类的成员。类Triangle有哪些成员变量?哪些成员方法? 1. 类和对象的区别 类是客观世界中事物的抽象,而对象是类实例化后的变量。例如,建房图纸可以建造出不同的房子,建房图纸是类,不是真实的房子,而建造出的每间房子都是对象。,2. 类的定义 Python使用class保留字来定义类,类名的首字母一般要大写。如, class Car: def infor(self): print( This is a car ) 类的方法至少有一个参数self,self代表将来要创建的对象本身。在类的方法中访问类的实例属性时需要以sel
5、f为前缀(下面将学习)。,8.2.2 实例属性和类属性 属性有两种,一种是实例属性,另一种是类属性。实例属性是在构造函数_init_中定义的,定义时以self作为前缀;类属性是在类中方法之外定义的属性。在主程序中(在类的的外部),实例属性属于实例(对象)只能通过对象名访问;类属性属于类可通过类名访问。 在类的方法中可以调用类的其它方法,可以访问类属性、对象属性。,【例8-1】 实例属性和类属性。 程序: #Exp8_1.py class Car: price=100000 #定义类属性 def _init_(self, c): self.color=c #定义实例属性,#主程序 car1=Ca
6、r(Red) car2=Car(Blue) print car1.color, Car.price Car.price=110000 #修改类属性 C=QQ #增加类属性 car1.color=Yellow #修改实例属性 print car2.color, Car.price, C print car1.color, Car.price, C,程序运行结果: Red 100000 Blue 110000 QQ Yellow 110000 QQ,如果属性名以双下划线_开头则是私有属性,否则是公有属性。私有属性在类外不能直接访问。Python提供了访问私
7、有属性的方式,可用于程序的测试和调试。 私有属性是为了数据封装和保密而设的属性,只能在类的成员方法(称为类的内部)中使用,通过self访问。公有属性是可以公开使用的,既可以在内部使用,也可以在外部(通过对象名访问)使用。,8.2.3 类的方法,类有3种方法:公有方法、私有方法和静态方法。 双下划线_开头则是私有方法, 上一行用 staticmethod 标识的方法是静态方法, 否则是公有方法。 公有方法、私有方法都属于对象,每个对象都有自己的公有方法和私有方法;公有方法通过对象名调用,私有方法不能通过对象名调用,只能在属于对象的方法中通过self调用;静态方法属于类,静态方法只能通过类名调用,
8、静态方法中不能访问属于对象的成员,只能访问属于类的成员。,【例8-3】 公有方法、私有方法和静态方法的定义和调用。,#Exp8_3.py class Fruit: price=0 def _init_(self): self._color=Red #定义和设置私有属性color self._city=Kunming #定义和设置私有属性city def _outputColor(self): #定义私有方法outputColor print(self._color) #访问私有属性color def _outputCity(self): #定义私有方法outputCity print(self
9、._city) #访问私有属性city,def output(self):#定义公有方法output self._outputColor( )#调用私有方法outputColor self._outputCity( )#调用私有方法outputCity staticmethod def getPrice():#定义静态方法getPrice return Fruit.price staticmethod def setPrice(p):#定义静态方法setPrice Fruit.price=p,#主程序 apple=Fruit() apple.output() print(Fruit.getPr
10、ice( ) Fruit.setPrice(9) print(Fruit.getPrice( ) apple._outputColor( ) #是否可行? 思考:能否添加公有方法,以便能通过对象名访问私有成员变量_color?,程序运行结果: Red Kunming 0 9,8.2.4 构造函数,Python中类的构造函数是_init_,用来为属性设置初值,在建立对象时自动执行。 8.2.5 析构函数 Python中类的析构函数是_del_,用来释放对象占用的资源,在Python收回对象空间之前自动执行。,【例8-5】 构造函数和析构函数。,#Exp8_5.py class Car : def _init_(self, n): self.num=n print 编号为, self.num, 的对象出生了. def _del_(self): print 编号为, self.num, 的对象死了. car1=Car(1) car2=Car(2) del car1 del car2,程序运行结果: 编号为 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 修建性设计合同范本
- 10万吨煤矿合同范本
- 单位只交社保合同范本
- 公司销售代理合同范本
- 出售机械板车合同范本
- 医药培训销售合同范本
- 个人精装房租赁合同范例
- 保洁大扫除合同范本
- 买汽车有没有三包合同范本
- 加工基地 合同范本
- 大地测量学全册配套完整课件
- 《Colours》教学讲解课件
- 整体煤气化联合循环课件
- 山东省中考物理总复习 八上 第3讲 物态变化
- 2022年湖南财信金融控股集团有限公司招聘笔试试题及答案解析
- 地质灾害防治培训ppt版(共43)
- 慕白的诗(十二首)
- 秩序维护人员的绩效考核规范
- 2022年苏州市吴中产业投资集团有限公司招聘笔试题库及答案解析
- QSB快速反应看板
- 公务员职务和级别工资档次套改及级别对应表
评论
0/150
提交评论