Python程序设计 第8章 面向对象程序设计1(第11次课)_第1页
Python程序设计 第8章 面向对象程序设计1(第11次课)_第2页
Python程序设计 第8章 面向对象程序设计1(第11次课)_第3页
Python程序设计 第8章 面向对象程序设计1(第11次课)_第4页
Python程序设计 第8章 面向对象程序设计1(第11次课)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机编程导论计算机编程导论 课程建设组课程建设组 编著编著2014.2014.1111 为了解决大型软件设计危机,在20世纪80年代提出了面向对象程序设计(object oriented programming, OOP)。面向对象程序设计是一种新的编程模式,这种编程模式的中心不再是程序的逻辑流程,而是软件或程序中的对象以及对象之间的关系。面向对象程序设计是针对大型软件的设计而提出的,它能使功能相对独立,能很好地做到代码重用,能使软件易于维护。 【问题问题8-1】定义一个类代表三角形,类中含三条边、求周长的函数,求面积的函数。然后用这个类生成一个等边三角形,一个直角三角形,依次求其周长及面积

2、。程序:程序: #Ques8_1.pyclass 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 等边

3、三角形的三条边:, t1.a, t1.b, t1.cprint 等边三角形的周长:, 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.08.2.1 类和对象类和对象

4、创建类时用变量表示属性用变量表示属性称为成员变量成员变量或成员属性,用函数表示方法用函数表示方法称为成员函数或成员方法成员方法,成员属性和成员方法都称为类的成员成员。类Triangle有哪些成员变量?哪些成员方法? 1. 类和对象的区别类和对象的区别 类是客观世界中事物的抽象,而对象是类实例化后的变量。例如,建房图纸可以建造出不同的房子,建房图纸是类,不是真实的房子,而建造出的每间房子都是对象。2. 类的定义类的定义 Python使用class保留字来定义类,类名的首字母一般要大写。如,class Car:def infor(self):print( This is a car ) 类的方法至

5、少有一个参数self,self代表将来要创建的对象本身。在类的方法中访问类的实例属性时需要以self为前缀(下面将学习)。8.2.2 实例属性和类属性实例属性和类属性属性有两种,一种是实例属性,另一种是类属性。实例属性是在构造函数_init_中定义的,定义时以self作为前缀;类属性是在类中方法之外定义的属性。在主程序中(在类的的外部),实例属性属于实例(对象)只能通过对象名访问;类属性属于类可通过类名访问。 在类的方法中可以调用类的在类的方法中可以调用类的其它方其它方法法,可以访问,可以访问类属性类属性、对象属性对象属性。【例例8-1】 实例属性和类属性。实例属性和类属性。程序:程序:#Ex

6、p8_1.pyclass Car: price=100000 #定义类属性定义类属性 def _init_(self, c): self.color=c #定义实例属性定义实例属性 #主程序car1=Car(Red)car2=Car(Blue)print car1.color, Car.priceCar.price=110000 #修改类属性C=QQ #增加类属性car1.color=Yellow #修改实例属性print car2.color, Car.price, Cprint car1.color, Car.price, C程序运行结果:Red

7、100000Blue 110000 QQYellow 110000 QQ如果属性名以双下划线_开头则是私有属性,否则是公有属性。私有属性在类外不能直接访问。Python提供了访问私有属性的方式,可用于程序的测试和调试。 私有属性是为了数据封装和保密而设的属性,只能在类的成员方法(称为类的内部)中使用,通过self访问。公有属性是可以公开使用的,既可以在内部使用,也可以在外部(通过对象名访问)使用。8.2.3 类的方法类有3种方法:公有方法、私有方法和静态方法。双下划线_开头则是私有方法, 上一行用 staticmethod 标识的方法是静态方法,否则是公有方法。 公有方法、私有方法都属于对象,

8、每个对象都有自己的公有方法和私有方法;公有方法通过对象名调用,私有方法不能通过对象名调用,只能在属于对象的方法中通过self调用;静态方法属于类,静态方法只能通过类名调用,静态方法中不能访问属于对象的成员,只能访问属于类的成员。【例8-3】 公有方法、私有方法和静态方法的定义和调用。#Exp8_3.pyclass Fruit: price=0 def _init_(self): self._color=Red #定义和设置私有属性color self._city=Kunming #定义和设置私有属性city def _outputColor(self): #定义私有方法outputColor

9、print(self._color) #访问私有属性color def _outputCity(self): #定义私有方法outputCity print(self._city) #访问私有属性city def output(self):#定义公有方法output self._outputColor( )#调用私有方法outputColor self._outputCity( )#调用私有方法outputCity staticmethod def getPrice():#定义静态方法getPrice return Fruit.price staticmethod def setPrice(p

10、):#定义静态方法setPrice Fruit.price=p#主程序apple=Fruit()apple.output() print(Fruit.getPrice( )Fruit.setPrice(9)print(Fruit.getPrice( )apple._outputColor( ) #是否可行?思考:能否添加公有方法,以便能通过对象名访问私有成员变量_color?程序运行结果:RedKunming09 8.2.4 构造函数Python中类的构造函数是_init_,用来为属性设置初值,在建立对象时自动执行。8.2.5 析构函数Python中类的析构函数是_del_,用来释放对象占用的资源,在Python收回对象空间之前自动执行。【例8-5】 构造函数和析构函数。#Exp8_5.pyclass Car : def _init_(self, n): self.num=n print 编号为, self.num, 的对象出生了. def _del_(self): print 编号为, self.num, 的对象死了.car1=Car(1)car2=Car(2)del car1del car2程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论