如何在 Python 3 中构建类和定义对象

介绍

Python是一个面向对象的编程语言。 面向对象的编程 (OOP)专注于创建可重复使用的代码模式,而不是程序编程,它专注于明确的序列指令。

对象导向编程中最重要的概念之一是类和对象之间的区别,它们是如下所定义的:

Class — 一个程序员为一个对象创建的蓝图. 这定义了一组属性,它将描述从这个类中实例化的任何对象.* Object* — 一个类的实例。

它们用于创建模式(在类的情况下),然后使用模式(在对象的情况下)。

在本教程中,我们将通过创建类,实例化对象,使用构建方法初始化属性,并与同一类的多个对象工作。

前提条件

您应该在您的计算机或服务器上安装 Python 3 并设置一个编程环境. 如果您没有设置编程环境,可以指: [本地编程环境] (https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3) 或适合您操作系统的 [服务器上的编程环境] (https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment (Ubuntu, CentOS, Debian等) 的安装和设置指南

班级

类就像一个蓝图或原型,您可以定义用于创建对象。

我们使用)使用def关键字。

要跟随本教程中的示例代码,请通过运行python3命令在本地系统上打开一个Python互动壳,然后您可以复制、粘贴或编辑示例,通过在>>>提示后添加它们。

让我们定义一个名为Shark的类别,它有两个与之相关的功能,一个是游泳,一个是惊人的:

1[label shark.py]
2class Shark:
3    def swim(self):
4        print("The shark is swimming.")
5
6    def be_awesome(self):
7        print("The shark is being awesome.")

由于这些函数被列入类Shark,因此它们被称为方法。 方法 是类内定义的特殊类型的函数。

对这些函数的论点是)来说,自我将始终是第一个参数,但不一定是唯一的参数。

定义这个类别没有创建任何Shark对象,只有我们稍后可以定义的Shark对象的模式。

创建上面的Shark类为我们提供了对象的蓝图。

对象

对象是一个类的实例,我们可以采取上述定义的Shark类,并使用它来创建一个对象或实例。

我们将创建一个名为sammyShark对象:

1sammy = Shark()

在这里,我们将对象)`。

现在,让我们使用Shark对象sammy的两种方法:

1sammy = Shark()
2sammy.swim()
3sammy.be_awesome()

)`和)命名这些方法,用于参考对象的属性。

由于关键字自我Shark类中定义的方法的参数,所以sammy对象被传递给了方法。

然而,当我们调用方法时,没有任何东西被传递到中,对象sammy被自动传递到点操作器上。

让我们在程序的背景下添加对象:

 1[label shark.py]
 2class Shark:
 3    def swim(self):
 4        print("The shark is swimming.")
 5
 6    def be_awesome(self):
 7        print("The shark is being awesome.")
 8
 9def main():
10    sammy = Shark()
11    sammy.swim()
12    sammy.be_awesome()
13
14if __name__ == "__main__":
15    main()

让我们运行程序,看看它做什么:

1python shark.py
1[secondary_label Output]
2The shark is swimming.
3The shark is being awesome.

对象)`函数中的两种方法,导致这些方法运行。

建设者方法

使用constructor 方法来初始化数据. 它在一个类的对象被实例化后运行. 也被称为 __init__ 方法,它将是一个类的第一个定义,并且看起来像这样:

1class Shark:
2    def __init__(self):
3        print("This is the constructor method.")

如果你在上面的程序中添加了上面的 __init__ 方法到 Shark 类,该程序会输出以下内容,而不会在 `sammy' 实例中进行任何修改:

1[secondary_label Output]
2This is the constructor method.
3The shark is swimming.
4The shark is being awesome.

这是因为构建方法是自动初始化,您应该使用此方法进行任何初始化,您希望与您的类对象。

而不是使用上面的构建方法,让我们创建一个使用一个名称变量,我们可以使用它来分配对象的名称。

1[label shark.py]
2class Shark:
3    def __init__(self, name):
4        self.name = name

接下来,我们可以修改我们的函数中的字符串以引用名称,如下:

 1[label shark.py]
 2class Shark:
 3    def __init__(self, name):
 4        self.name = name
 5
 6    def swim(self):
 7        # Reference the name
 8        print(self.name + " is swimming.")
 9
10    def be_awesome(self):
11        # Reference the name
12        print(self.name + " is being awesome.")

最后,我们可以将Shark对象的名称sammy设置为等于Sammy,通过将其作为Shark类的参数:

 1[label shark.py]
 2class Shark:
 3    def __init__(self, name):
 4        self.name = name
 5
 6    def swim(self):
 7        print(self.name + " is swimming.")
 8
 9    def be_awesome(self):
10        print(self.name + " is being awesome.")
11
12def main():
13    # Set name of Shark object
14    sammy = Shark("Sammy")
15    sammy.swim()
16    sammy.be_awesome()
17
18if __name__ == "__main__":
19    main()

我们现在可以运行这个程序:

1python shark.py
1[secondary_label Output]
2Sammy is swimming.
3Sammy is being awesome.

我们用参数名(与)定义了__init__方法,并在该方法中定义了变量。

由于构建方法是自动初始化的,我们不需要明确地称呼它,只有在我们创建一个新的类实例时,在阶级名称之后的中传递参数。

如果我们想添加另一个参数,例如年龄,我们也可以通过将其传递到__init__方法来做到这一点:

1class Shark:
2    def __init__(self, name, age):
3        self.name = name
4        self.age = age

然后,当我们创建我们的对象sammy时,我们可以在我们的声明中通过Sammy的年龄:

1sammy = Shark("Sammy", 5)

要使用年龄,我们还需要在类中创建一个要求它的方法。

Constructor 方法允许我们初始化对象的某些属性。

使用多个对象

类是有用的,因为它们允许我们根据相同的蓝图创建许多相似的对象。

为了了解这项工作是如何工作的,让我们在我们的程序中添加另一个Shark对象:

 1[label shark.py]
 2class Shark:
 3    def __init__(self, name):
 4        self.name = name
 5
 6    def swim(self):
 7        print(self.name + " is swimming.")
 8
 9    def be_awesome(self):
10        print(self.name + " is being awesome.")
11
12def main():
13    sammy = Shark("Sammy")
14    sammy.be_awesome()
15    stevie = Shark("Stevie")
16    stevie.swim()
17
18if __name__ == "__main__":
19  main()

我们创建了一个名为stevie的第二个Shark对象,并将其命名为Stevie

让我们运行这个程序:

1python shark.py
1[secondary_label Output]
2Sammy is being awesome.
3Stevie is swimming.

输出显示,我们正在使用两个不同的对象,sammy对象和stevie对象,两者都属于Shark类。

类允许创建多个对象按照相同的模式,而无需从头开始创建每个对象。

结论

本教程涉及创建类,实例化对象,使用构建方法初始化属性,并与相同类的多个对象工作。

面向对象的编程是一个重要的概念,因为它允许重复使用代码,因为为一个程序创建的对象可以在另一个程序中使用。

Published At
Categories with 技术
comments powered by Disqus