1.2.9. 面向对象编程(OOP)

Python支持面向对象编程(OOP)。OOP的目标是:

  • 组织代码,和
  • 以在类似的上下文中重用代码。

这里有一个小例子:我们创建一个Student,它是一个我们将能够使用的收集了几个自定义函数(方法)和变量(属性)的对象:

>>> class Student(object):
... def __init__(self, name):
... self.name = name
... def set_age(self, age):
... self.age = age
... def set_major(self, major):
... self.major = major
...
>>> anna = Student('anna')
>>> anna.set_age(21)
>>> anna.set_major('physics')

在上一个示例中,Student类具有__init__set_ageset_major方法。其属性为nameagemajor我们可以使用以下符号来调用这些方法和属性:classinstance.methodclassinstance.attribute__init__构造函数是我们调用的一种特殊方法:MyClass(init parameters if any)

现在,假设我们要创建一个新类MasterStudent,具有与前一个方法和属性相同的方法和属性,但附加一个internship属性。我们不会复制上一个类,而是继承

>>> class MasterStudent(Student):
... internship = 'mandatory, from March to June'
...
>>> james = MasterStudent('james')
>>> james.internship
'mandatory, from March to June'
>>> james.set_age(23)
>>> james.age
23

MasterStudent类继承Student的属性和方法。

由于类和面向对象的编程,我们可以组织不同类的代码,这些类对应于我们遇到的不同对象(一个Experiment类、一个Image类、一个Flow类等)以及它们自己的方法和属性。然后,我们可以使用继承来考虑基类的变化并重用代码。例如:从Flow基类,我们可以创建派生的StokesFlow、TurbulentFlow、PotentialFlow等。