第七章 类及面向对象编程

第七章 类及面向对象编程

ID:33942288

大小:169.78 KB

页数:9页

时间:2019-02-28

第七章 类及面向对象编程_第1页
第七章 类及面向对象编程_第2页
第七章 类及面向对象编程_第3页
第七章 类及面向对象编程_第4页
第七章 类及面向对象编程_第5页
资源描述:

《第七章 类及面向对象编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.第七章类及面向对象编程类是用来创建数据结构和新类型对象的主要机制.本章的主题就是类,面向对象编程和设计不是本章的重点。本章假定你具有数据结构的背景知识及一定的面向对象的编程经验(其它面向对象的语言,比如java,c++).(参见第三章,类型和对象了解对象这个术语及其内部实现的附加信息)WeiZhong补充:这本书出版于2001年,虽然Python有极佳的向下兼容性,但我们应该学习最新的知识。本章很多地方已经明显过时,为了保证大家学到新的知识并维持这本书的完整性,我会在必要的地方说明哪些地方已经过时,哪些地方新增了功能。Python从2.2起引入了new-

2、style对象模型,以逐步替代已经使用多年的classic对象模型。由于classicclass已经行将废止,所以我对本章的例子均作为了适当的修改以支持new-style对象模型。参考文档:《PythonInaNutshell》中的一节Python中的新型类及其实例1.1.class语句一个类定义了一系列与其实例对象密切关联的属性.典型的属性包括变量(也被称为类变量)和函数(又被称为方法).class语句用来定义一个类.类的主体中语句在类定义同时执行.(如Listing7.1)Listing7.1类Togglelinenumberslang=enid=CA

3、-9e9263f625838401ac66df16141fa4d997877a0f_000dir=ltr1classAccount(object):2"一个简单的类"3account_type="Basic"4def__init__(self,name,balance):5"初始化一个新Account实例"6self.name=name7self.balance=balance8defdeposit(self,amt):9"存款"10self.balance=self.balance+amt11defwithdraw(self,amt):12"取款"13s

4、elf.balance=self.balance-amt14definquiry(self):15"返回当前余额"16returnself.balance1.2.访问类属性类对象作为一个名字空间,存放在类定义语句运行时创建的对象.例如,Account里的内容可以这样访问:Account.account_typeAccount.__init__Account.depositAccount.withdrawAccount.inquiry需要注意的是,class语句并不创建类的实例(例如上边的例子,并没有创建任何帐户).它用来定义所有实例都应该有的属性.在类中定

5、义的常规方法的第一个参数总是该类的实例,通常这个参数记为self。你也可能用其它任何合法的变量名,不过为了符合惯例,你最好还是用self.类中定义的变量,即类变量,如account_type,它被所有该类的实例共享.虽然类定义了一个名字空间,但这个名字空间并不是为类主体中的代码服务的.因此在类中引用一个类的属性必须使用类的全名:Togglelinenumberslang=enid=CA-324c0a12647925d1e7248d0ce536587204e44613_001dir=ltr1classFoo(object):2defbar(self):3pr

6、int"bar!"4defspam(self):5bar(self)#错误,引发NameError6Foo.bar(self)#合法的最后,你不能定义一个不操作实例的方法:Togglelinenumberslang=enid=CA-d3dd1884c15b5297c2ca66f539c1f1a8c896ee12_002dir=ltr1classFoo(object):2defadd(x,y):3returnx+y4a=Foo.add(3,4)#TypeError.需要一个类实例作为第一个参数=================================

7、======================================================以下为WeiZhong增补部分:静态方法和类方法(Python2.2以上)静态方法:可以直接被类或类实例调用。它没有常规方法那样的特殊行为(绑定、非绑定、默认的第一个参数规则等等)。你完全可以将静态方法当成一个用属性引用方式调用的普通函数。任何时候定义静态方法都不是必须的(静态方法能实现的功能都可以通过定义一个普通函数来实现).有些程序员认为,当有一堆函数仅仅为某一特定类编写时,将这些函数包装成静态这种方式可以提供使用上的一致性。根据python2.

8、4最新提供的新语法,你可以用下面的方式创建一个静态方法:class

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。