介绍
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
类,并使用它来创建一个对象或实例。
我们将创建一个名为sammy
的Shark
对象:
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
类。
类允许创建多个对象按照相同的模式,而无需从头开始创建每个对象。
结论
本教程涉及创建类,实例化对象,使用构建方法初始化属性,并与相同类的多个对象工作。
面向对象的编程是一个重要的概念,因为它允许重复使用代码,因为为一个程序创建的对象可以在另一个程序中使用。