- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第六章类与对象;经典的编程方法称为面向过程的程序设计方法。在面向过程的程序设计中,使用函数实现各个功能模块,这些函数往往具有大量的形式参数,并且其中还调用了大量其他的函数。这需要程序设计人员花费大量的时间管理和分类这些函数。
一种对这些函数分类管理的好办法为把这些函数按其处理的客观对象进行分类。;在Python语言中,面向对象的程序设计方法具有两大特点,即封装和继承。封装特性表现在类把客观事物的属性和方法“封装”在一起,公有属性和公有方法只能通过对象进行访问(公共属性、静态方法和类方法除外)。继承是指一个类可以“继承”一个或多个类的属性和方法,被继承的类称为基类或父类,继承得到的类称为子类。
本章将对类与对象的相关知识分为四个小节进行讲解:
6.1类与对象的定义
6.2类中的属性与方法
6.3特殊方法
6.4继承
6.5本章小结
;在Python语言中,定义类的标准方法如下:
class类名(父类列表):
#约定“类名”为首字母大写的合法标识符,如果没有父类,圆括号可以省略。
def__init__(self,参数表)#self包含了属于该类创建的对象的所有属性。
语句组
#构造方法的作用在于为类创建的对象中的属性(即数据成员)赋初始值。
defgetXxx(self)#get方法,用于获取属性值
语句组
defsetXxx(self,参数表)#set方法,用于设置属性值
语句组
其他方法
def__del__(self)
语句组
#析构方法将清除对象所占有的全部内存空间。;下面的实例给出了一个标准的类的实例。;;这个实例可总结如下关于类与对象的结论:
(1)使用class定义类,类名约定为首字母大写的合法标识符。
(2)类中应有显示定义的构造方法“__init__”,构造方法用于初始化类(创建的对象)的属性。构造方法在使用类定义对象时自动被调用。
(3)类中应有get方法和set方法,分别用于读取类(创建的对象)的属性和为类(创建的对象)的属性赋值。
(4)所有类中的方法均有一个内部参数self,而且self必须作为第一个参数,内部参数self在外部不可见,self是指代类(创建的对象)的属性,使用???self.属性名”访问类(创建的对象)的属性。在调用类的方法时忽略self参数。
(5)类中应包含有完成所需要的功能而设计的方法,这些方法均应使用类(创建的对象)的属性。
(6)类中一般不编写析构方法,因为Python语言具有优秀的内存回收机制。;(7)类定义对象的方式为“对象名=类名(实参表)”,这里的“实参表”与类(创建的对象)的属性相对应,实参表的个数由构造方法的外部参数的个数决定,勿略内部参数self。
(8)对象调用其中的公有方法的方法为“对象名.公有方法名(实参表)”,这里所谓的“公有方法”是指可以借助于对象名调用的方法,还有一类方法称为私有方法,不能直接借助于类名调用,而只能借助于类(创建的对象)中的公有方法间接调用。这里的“实参表”对应于公有方法的外部参数表,当公有方法没有外部参数时,“公有方法名”后的“圆括号”不能省略。
(9)在这个实例中,属性r属于公有属性,可以借助于对象直接访问,即“c.r=5.0”和第20行的“c.setR(5.0)”作用完全相同(即第20行可以替换为“c.r=5.0”)。在C++语言中,认为“c.r=5.0”是不好的方法,是因为这种赋值打破了类的封装特性,而建议将r设为私有属性。下面将在第6.2.2节介绍私有成员,但是,在Python语言中,建议可以使用公有属性。;“类”是一种数据类型,不存在于内存中;“对象”是一种“变量”,保存在内存中,而且具有实在的属性和方法。所以严格意义上,属性与方法属于对象,而不属于类。但是在不引起歧义的情况下,也常说“类的属性与方法”。
在Python语言中,的确有一种方法称为类方法,还有一些其他情况下的属性和方法,在本节中将细分为四个小节进一步讨论这些属性和方法的定义和使用方法。同时,将类中的标准属性(self下的属性)和公有方法称为数据成员和方法成员。;面向对象程序设计有两个特点,即封装和继承。
非面向对象的属性和方法是指可以借助于类名直接访问的属性和方法。这两者有根本性的区别:
(1)借助于对象访问的属性和方法,只有在创建了对象后,才能由对象调用,这类属性和方法可以称之为动态属性和动态方法;
(2)非面向对象的属性和方法,在定义了类后,就可以由类名调用;也可以由类的对象调用(本质上仍是由类名调用的),这类属性和方法可以
文档评论(0)