class
类与对象
Python是面向对象的语言(object-oriented),同样面向对象的语言还有C++,Java等;与之相对的是面向过程的语言(procedural),例如C语言。前面的教程中,我们也主要是采用了面向过程的编程方式,在这一节中,将为大家介绍面向对象的编程方法,其实现途径就是使用类(class)和对象(object)。
在面向对象的编程中,我们主要处理的不是前面介绍的那样传统的一行行的代码,而是来模拟现实世界中的不同的事物,即对象。一个对象可以有属性和行为,也可以和其他对象相联系和发生相互作用。例如,一只小狗可以有属性(年龄、体重等)和行为(吠、跑、打滚等)。面向对象的编程方式基于以下四个核心特征:
多态(Polymorphism)
继承(Inheritance)
抽象(Abstraction)
封装(Encapsulation)
核心概念
这里我们简要介绍一下上述这些重要的概念。
类:类是创建对象的蓝图,我们可以把类理解为一个生产对象的工厂。类提供了创建对象的模板,通过方法来指定对象的行为,通过属性来指定其状态。
对象:对象就是类的一个实例,一个对象可以有状态(属性)和行为。
继承:在面向对象的编程中,子类可以从父类继承属性和方法。继承可以分为单一继承和多重继承。单一继承是指一个子类只继承一个父类,而多重继承指一个子类可以继承多个父类。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。在这里我们可以理解为,同一个方法有不同的输出。
抽象:这个不知道具体该怎么表达,直接引用一段"Learn Python in 7 Days (Mohit, Bhaskar N. Das)"里的原文“Here, we hide the necessary details and are only interested in showing the relevant details to the other intended user. Here, by other intended user we mean another software application, or another class, or other client who will be the end users of the program.”
封装:封装是指将类的方法的细节进行隐藏,对外界来说,类就像一个“黑盒子”。封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。
本节的部分内容直接参考了菜鸟教程。
创建类
Python中创建类的语法非常简单:
class ():
'''statements'''
空类
空类是最简单的类,我们在这里创建一个空类:
class Student():
'''An empty class.'''
pass
Student
上面这个类中没有任何内容,用pass关键字来起到一个占位的作用,Student后面的括号也可以省略,第一行三撇号'''里面的语句为类的文档(可选)。类可以看作是创建实例的蓝图,即使是空类也可以。实际上,空类在我们后面做科研数据处理的过程中有很重要的应用,它可以作为将要分析的数据的一个容器,我们后面会讲到。下面我们就用空类Student来创建实例:
student1 = Student()
student2 = Student()
print student1
print student2
从上面的输出结果我们看到所创建的两个实例(instance),而且这两个实例在内存中存储在不同的地址上。
实例变量
实例变量是指某个具体实例(对象)特有的变量。例如,针对上面创建的空类