跳转到内容

面向对象编程/类

来自维基教科书,开放的书籍,开放的世界

在面向对象编程 (OOP) 中,类是一种用于创建对象的蓝图。它定义了一种新的数据类型,封装了与特定实体或概念相关的数据和行为(方法)。类可以作为模板,允许我们创建具有相似特征和行为的多个对象。类本质上是一个用于存放大量函数的容器,这些函数可以相互依赖,也可以在类中独立运行。

类的组成部分

[编辑 | 编辑源代码]

类包含两个主要组成部分:属性(也称为特性或数据成员)和方法(也称为成员函数)。


1. 属性:属性是表示对象状态的变量。它们存储有关对象特征的信息。在动物类比中,属性可以包括speciesnameageweightcolor等。属性定义了对象可以保存哪些数据。


2. 方法:方法是定义对象行为的函数。它们表示对象可以执行的操作。在动物类比中,方法可以包括“make_sound()”、“move_type()”、“eat_what()”等。方法定义了对象可以执行哪些操作。


大多数类都是单独的 Python 文件,可以被其他 Python 文件使用或访问。将类放在单独的页面上允许其他 Python 文件调用和引用该类,而不会直接影响类中的代码。类可用于计算方程式,注册用户输入并对其进行操作,以及向其他 Python 文件引发异常,同样不会直接受到其他 Python 文件代码的影响。

子类本质上是类的子类。将类视为父母,将子类视为孩子。父类可以将属性或函数传递给子类。或者可以将其视为孩子从父母那里继承东西。子类用于更复杂的程序,这些程序在一个宏观概念下利用多个想法。

下面是使用 Python(或大多数其他 OOP 语言)创建类的模板,我们使用class关键字后跟类名和冒号。在类中,我们定义属性和方法。

class MyClass:
    # Constructor method (__init__) initializes object attributes
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2

    # Method 1
    def method1(self):
        # Method code here

    # Method 2
    def method2(self):
        # Method code here

以下是用 Python 创建 Animal 类蓝图的真实示例。这是一个所有动物的蓝图,称为“Animal”类,它将包含所有动物园动物共有的属性和行为。在这个类中,我们定义了属性,如“species”、“name”和“age”。我们还有两个方法:“make_sound()”、“move_type()”、eat_what()。目前这些方法是空的(用pass标记),因为每种动物都将以不同的方式实现它们。

class Animal:
    def __init__(self, species, name, age):
        self.species = species
        self.name = name
        self.age = age

    def make_sound(self):
        pass

    def move(self):
        pass
Zebra Biblical Zoo 01
斑马圣经动物园 01

现在,我们将创建一个单独的类Zebra,如下所示

class Zebra(Animal):
    def __init__(self, name, age):
        super().__init__("Zebra", name, age)

    def make_sound(self):
        return "Bray"

    def move(self):
        return "Galloping."

正如您在这些类中看到的,我们使用继承来继承 Animal 类的属性和方法。然后,我们覆盖了“make_sound()”和“move()”方法,以实现每种动物的特定声音和移动行为。

现在,我们已经创建了一个斑马类动物,我们现在可以创建单独的动物对象,并在主程序中与它们进行交互。

def main():
    # Create animal objects
    zebra1 = Zebra("Marty", 10)

    # Interact with other  animals
    print({zebra1.name} " the " {zebra1.species} " says: " {zebra1.make_sound()})
    #Marty the Zebra says : bray
    
    #Interact with enviroments
    print({zebra1.name} " the " {zebra1.species} " aged " {zebra1.age} {zebra1.move()})
    #Marty the Zebra aged 10 galloping
    
if __name__ == "__main__":
    main()

另请参阅

[编辑 | 编辑源代码]

YouTube 教程

[编辑 | 编辑源代码]
华夏公益教科书