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 等。