引言提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritanee)和圭寸装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。在讨论Python的OOP之前,先看几个OOP术语的定义:?类:对具有相同数据和方法的一组对象的描述或定义。?对象:对象是一个类的实例。?实例(instanee):—个对象的实例化实现。?标识(identity):每个对象的实例都需要一个可以唯一标识这个实例的标记。?实例属性(instaneeattribute):一个对象就是一组属性的集合。?实例方法(instaneemethod):所有存取或者更新对象某个实例一条或者多条属性的函数的集合。?类属性(classattribute):属于一个类中所有对象的属性,不会只在某个实例上发生变化?类方法(elassmethod):那些无须特定的对性实例就能够工作的从属于类的函数。:elass类名:类变量def__init__(self,paramers):def函数(self,...)其中直接定义在类体中的变量叫类变量, 而在类的方法中定义的变量叫实例变量。 类的属性包括成员变量和方法,其中方法的定义和普通函数的定义非常类似,但方法必须以 self作为第一个参数。举例:elassMyFirstTestClass:classSpec="itisatestelass"def__init__(self,word):print"say"+worddefhello(self,name):print"hello"+name在Python类中定义的方法通常有三种:实例方法,类方法以及静态方法。这三者之间的区别是实例方法一般都以 self作为第一个参数,必须和具体的对象实例进行绑定才能访问,而类方法以els作为第一个参数,els表示类本身,定义时使用***@classmethod;而静态方法不需要默认的任何参数,***@staticmethod。classMethodTest():count=0defaddCount(self):+=1print"Iamaninstaneemethod,mycountis"+str(),******@staticmethoddefstaticMethodAdd():+=1print"Iamastaticmethond,mycountis"+str()***@classmethoddefclassMethodAdd(cls):+=1print"Iamaclassmethod,mycountis"+str(),clsa=MethodTest()()"'Iamaninstaneemethod,mycountis1<>();#Iamastaticmethond,();#Iamastaticmethond,mycountis3classMethodAdd();#Iamaclassmethod,();#Iamaclassmethod,()"'Traceback(mostrecentcalllast):File"<pyshell#5>",line1,in<module>()TypeError:unboundmethodaddCount()mustbecalledwithMethodTestinstaneeasfirstargument(gotnothinginstead)III从上面的例子来看,静态方法和类方法基本上区别不大,特别是有 Java编程基础的人会简单的认为静态方法和类方法就是一回事,可是在 Python中事实是这样的吗?看下面的例子:();#Iamaclassmethod,(MethodTes
python面向对象学习总结 来自淘豆网m.daumloan.com转载请标明出处.