- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
word格式
word格式
....
..
..
引言
引言
提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)
和封装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。
在讨论Python的OOP之前,先看几个OOP术语的定义:
类:对具有相同数据和方法的一组对象的描述或定义。
对象:对象是一个类的实例。
实例(instance):一个对象的实例化实现。
标识(identity):每个对象的实例都需要一个可以唯一标识这个实例的标记。
实例属性(instanceattribute):一个对象就是一组属性的集合。
实例方法(instancemethod):所有存取或者更新对象某个实例一条或者多条属性的函数的集合。
类属性(classattribute):属于一个类中所有对象的属性,不会只在某个实例上发生变化
1.?P类y方t法h(oclanssm中etho的d):类那些无与须特对定的象对性实例就能够工作的从属于类的函数。
Python中定义类的方式比较简单:
class 类名:类变量
def init (self,paramers):
def 函数(self,...)
其中直接定义在类体中的变量叫类变量,而在类的方法中定义的变量叫实例变量。类的属性包括成员变量和方法,其中方法的定义和普通函数的定义非常类似,但方法必须以self作为第一个参数。
举例:
classMyFirstTestClass:classSpec=itisatestclassdef init (self,word):
printsay+worddefhello(self,name):
printhello+name
在Python类中定义的方法通常有三种:实例方法,类方法以及静态方法。这三者之间的区别是实例方法一般都以self作为第一个参数,必须和具体的对象实例进行绑定才能访问,而类方法以cls作为第一个参数,cls表示类本身,定义时使用@classmethod;而静态方法
不需要默认的任何参数,跟一般的普通函数类似.定义的时候使用@staticmethod。
classMethodTest():count=0
defaddCount(self):
MethodTest.count+=1
printIamaninstancemethod,mycountis+str(MethodTest.count),self@staticmethod
defstaticMethodAdd():
MethodTest.count+=1
printIamastaticmethond,mycountis+str(MethodTest.count)@classmethod
defclassMethodAdd(cls):
MethodTest.count+=1
printIamaclassmethod,mycountis+str(MethodTest.count),cls
a=MethodTest()a.addCount()
Iamaninstancemethod,mycountis1 main .MethodTestinstanceat0x011EC990
a.staticMethodAdd() ;#Iamastaticmethond,mycountis2MethodTest.staticMethodAdd();#Iamastaticmethond,mycountis3a.classMethodAdd();#Iamaclassmethod,mycountis4 main .MethodTest
MethodTest.classMethodAdd();#Iamaclassmethod,mycountis5 main .MethodTestMethodTest.addCount()
Traceback(mostrecentcalllast):Filepyshell#5,line1,inmoduleMethodTest.addCount()
TypeError:unboundmethodaddCount()mustbecalledwithMethodTestinstanceasfirstargument(gotnothinginstead)
从上面的例子来看,静态方法和类方法基本上区别不大,特别是有
文档评论(0)