资源描述:
《python面向对象学习总结.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、word格式引言提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。在讨论Python的OOP之前,先看几个OOP术语的定义:·类:对具有相同数据和方法的一组对象的描述或定义。·对象:对象是一个类的实例。·实例(instance):一个对象的实例化实现。·标识(identity):每个对象的实例都需要一个可以唯一标识这个实例的标记。·实例属性(instanceattribute)
2、:一个对象就是一组属性的集合。·实例方法(instancemethod):所有存取或者更新对象某个实例一条或者多条属性的函数的集合。·类属性(classattribute):属于一个类中所有对象的属性,不会只在某个实例上发生变化·类方法(classmethod):那些无须特定的对性实例就能够工作的从属于类的函数。1.Python中的类与对象Python中定义类的方式比较简单:class 类名:类变量def__init__(self,paramers):def 函数(self,...)其中直接定义在类体中的变量叫类变量,而在类的方法中定义的变量叫实例变量
3、。类的属性包括成员变量和方法,其中方法的定义和普通函数的定义非常类似,但方法必须以self作为第一个参数。举例:classMyFirstTestClass:classSpec="itisatestclass"def__init__(self,word):print"say"+worddefhello(self,name):print"hello"+name在Python类中定义的方法通常有三种:实例方法,类方法以及静态方法。这三者之间的区别是实例方法一般都以self作为第一个参数,必须和具体的对象实例进行绑定才能访问,而类方法以cls作为第一个参数,c
4、ls表示类本身,定义时使用@classmethod;而静态方法不需要默认的任何参数,跟一般的普通函数类似.定义的时候使用@staticmethod。classMethodTest():count=0....word格式defaddCount(self):MethodTest.count+=1print"Iamaninstancemethod,mycountis"+str(MethodTest.count),self@staticmethoddefstaticMethodAdd():MethodTest.count+=1print"Iamastaticm
5、ethond,mycountis"+str(MethodTest.count)@classmethoddefclassMethodAdd(cls):MethodTest.count+=1print"Iamaclassmethod,mycountis"+str(MethodTest.count),clsa=MethodTest()a.addCount()'''Iamaninstancemethod,mycountis1<__main__.MethodTestinstanceat0x011EC990>'''a.staticMethodAdd();#Iama
6、staticmethond,mycountis2MethodTest.staticMethodAdd();#Iamastaticmethond,mycountis3a.classMethodAdd();#Iamaclassmethod,mycountis4__main__.MethodTestMethodTest.classMethodAdd();#Iamaclassmethod,mycountis5__main__.MethodTestMethodTest.addCount()'''Traceback(mostrecentcalllast):File
7、"",line1,inMethodTest.addCount()TypeError:unboundmethodaddCount()mustbecalledwithMethodTestinstanceasfirstargument(gotnothinginstead)'''从上面的例子来看,静态方法和类方法基本上区别不大,特别是有Java编程基础的人会简单的认为静态方法和类方法就是一回事,可是在Python中事实是这样的吗?看下面的例子:MethodTest.classMethodAdd();#Iamaclassme
8、thod,mycountis5__main__.MethodTestclasssubMetho