首页 > 代码库 > 关于Python中的class

关于Python中的class

时间:2014.05.14

地点:基地

-----------------------------------------------------------------------------------

一、背景

  关于Python,自己一直处于边学边用的落后年代,边学边用有一个好处,那就是我可以针对性的去学习,哪个不懂就看哪个,如此目的性很强,但还有一处不足之处,缺乏系统性的学习,唯有系统性深入的学习才能让你在这个世界里游刃有余,不然一个小小的问题就能让你纠结好一阵子,材料院的项目全盘抛弃了C#,转向Python虽然让自己变得很累,但通过这个项目接触了Python的强大威力,亦也是收获。但正如所说,对于应该深入系统的学习,才可让自己驾驭于语言之上,不然总被语言驾驭。语言重不重要,不可一板拍死,熟练则不重要,不熟练则重要。

-----------------------------------------------------------------------------------

二、如何定义Python中的类

  类是OOP编程中的核心,当然Python又没强制性要求面向对象编程,但类的精神实在博大,而不得不细细品味下Python中的类又究竟是如何一回事。和大多数面向对象编程语言一样,类提供创建实例的蓝图。Python中定义类的格式如下:

class MyClass(BaseClass):
    "optional documentation string"
     #static member declarations
     #method declarations
  类名字后紧跟着括号,括号里可提供一个可选的父类(基类),若无合适的基类,我们可以使用object作为基类,用object类作为自定义类的基类,这也是很常见的一种形式。之后便是文档字符串,之前一直以为这一行的作用,后来才知道这种文档字符串java里也有,然后接着是成员定义和方法定义。一个例子:

class MyClass(object):
    ‘my class example‘
    version=1
    def __init__(self,nm=‘Jon‘):
        ‘constructor‘
        self.name=nm
    def ShowName(self):
        ‘display infor function‘
        print self.name
        print self.__class__.__name___              #__name__表示用于实例化该实例的类的名字,即该实例的蓝图名字是什么
    def ShowVersion(self):
        ‘display class static arrribute‘
        print self.version
    def AddMe2Me(self,x):
        ‘apply+operation to argument‘
        return x+x
注意类定义各成员变量和成员函数的缩进

上面类中定义了一个成员变量version,它将被所有实例和类的方法共享,另外所有以连续两根下划线标记开头和结束的类方法都是一些特殊方法,比如这里的__init__()方法,类的实例被创建时,相当于一个构造器,但又和C++,C#等不同,它并不创建实例,仅仅是将我们创建好了对象后,执行的第一个方法,目的给是对象必要的初始化工作,其实叫初始化器更合理吧,本来就是一个初始化器,默认的__init__()方法是什么也不做,因此我们常编写自己的__init__方法,以修饰我们创建的对象。这里的self是类实例自身的引用,就像C++类中使用的this标识符

-----------------------------------------------------------------------------------

三、如何创建类的实例

 实例化一个类可形如以下:

my_object=MyClass(‘Jim‘)
然后利用创建好的实例,你就可以在它上面通过点属性访问实例的成员变量或成员函数了。这种Python中的类实例化注意和其他语言区别。