Python面向对象编程初学者指南

从Raspberry Pi到机器学习,Python都应运而生。但是,如果您想从事任何大型项目,则需要了解Python如何与面向对象编程(OOP)一起使用。本文将介绍您需要了解的最基本的知识。

如果您实际上还没有编程,那么为什么不看看这些最好的Monty Python草图呢?毕竟,他们确实鼓舞了这种语言!

等等,Python不是真正的语言?

让我们弄清楚一件事:Python是一种真正的编程语言,它很流行,而且发展迅速。生长。仅仅因为它读起来像伪代码,并且您可以用它在Pi上对Minecraft进行编码,但这并不意味着您应该将它打折为一种较小的语言。

OOP是现代软件开发的基础,而Python是超过保持能力的能力。它可能做的一件事或其他事情与其他主流语言不同,但不要让您失望。

本教程将假定您具有Python的基本知识,但我们将介绍所有复杂的内容一路上。如果您不熟悉Python,为什么不看看这些技巧来学习一种新的编程语言呢?

Python先决条件和设置

在开始使用Python之前,您不妨先获得Python开发环境设置。我们将使用Python 3.6.5,虽然您可以使用旧版本,但是如果您使用的是相当新的版本,那么接下来的问题会更少。

您将要创建一个虚拟环境(如果尚未安装的话)(尽管大多数最新版本的Python都附带了该环境)。完成这些设置后,就可以开始使用了。让我们开始吧!

Python基础:类

是OOP的基本构建块。一堂课就像一个计划或蓝图。它们定义对象的特征。例如,如果您有汽车课,则可能会说它有四个轮子,至少一个座位和一个引擎。

在Python中制作课程的方法如下:

class Vehicle:  """ This class defines vehicles. """  pass

简单吧?这里发生了一些事情。请注意课程顶部的评论。这是一个特殊的注释,称为 docstring 。它应该解释一下您的代码。通过使用三引号(“"" ),您告诉Python这是一个文档字符串。

pass 关键字告诉Python没有。这是一个特殊的词,您可以将其视为待办事项。它将使您的代码运行,但实际上不执行任何操作。

如果运行此代码,您将看不到任何反应。您需要实例化您的课程。这实际上意味着根据类中定义的计划去构建对象。您可以创建任意数量的副本,每个副本具有不同的属性。操作步骤如下:

red_car = Vehicle()

如果再次运行此操作,将看不到任何反应。该代码可以正常运行,但是您尚未告诉它做任何明显的事情。 Vehicle 类定义了车辆的蓝图,该最新行创建了一个车辆对象,并为其命名为 red_car

可以制作尽可能多的对象:

red_car = Vehicle()green_car = Vehicle()blue_car = Vehicle()

让我们添加更多代码。将 __ init __ 方法添加到 Vehicle 类:

class Vehicle:  """ This class defines vehicles. """  def __init__(self, color='plain'):  """ Setup some custom car properties """  print('New car made!')  self.color = colorred_car = Vehicle()green_car = Vehicle()blue_car = Vehicle()

请特别注意此 __ init __ 方法。它必须以两个下划线开头和结尾。这是Python中的一种特殊方法。创建新对象时会自动调用它。运行此代码将多次显示“ New car made!"字样。

最后, __ init __ 接受了一个名为 color 的自定义参数。紧随其后的等号和字符串告诉Python如果未指定,则将颜色设置为“纯色"。您可以在创建时修改实例以设置您的汽车颜色:

red_car = Vehicle(color='red')green_car = Vehicle(color='green')blue_car = Vehicle(color='blue')

如果您打印汽车颜色,即使所有三个实例都使用相同的规格,您也会看到每个实例具有不同的颜色。 (班级)。 Python允许您访问几乎任何变量或对象-很少有其他语言允许您执行此操作:

print(red_car.color)print(green_car.color)print(blue_car.color)

之所以有效,是因为您将 color 分配给 self.color 。 Self是Python中的另一个特殊关键字,它指向类的每个特定实例。每当您使用self时,您都可以设置或访问该实例唯一的数据。例如,红色汽车的颜色为红色。

修改您的 __ init __ 方法以将汽车噪声存储在变量中:

self.noise = 'Vroooom'

要打印汽车噪音,您可以像使用颜色一样访问 noise 变量,但这不是最好的主意。如果在开车时想要同时运行其他一些代码(也许还没有编写的代码)怎么办?或者,如果您想改变汽车的未来驾驶方式,该怎么办?通过创建功能(也称为方法),您可以严格控制事物的工作方式。将此添加到您的 __ init __ 方法下面:

def drive(self):  print(self.noise)

您可以非常简单地调用此方法:

red_car.drive()

无论何时调用驱动器方法,Python将打印声音。您可以扩展它以执行所有任务,但是现在就保留它。

做得好!现在,您应该牢牢掌握基础知识。您应该能够创建和使用自己的类,每个类都有各自独特的功能和功能。

Python中的私有变量如何?

私有对象在大多数其他情况中很常见语言。它们只是无法在类外部访问的变量或函数。它们可能是需要在使用前满足特殊条件的代码,或者只是为内部使用而设计的代码。无论出于何种原因,实例都无法访问私有成员……除非您使用Python进行编码。

Python没有私有成员。取而代之的是,Python依靠一种荣誉制度:“我们都同意成年人。" Python程序员理解,您可能想修改类的敏感内部知识,这没关系,因此,什么都应该真正不可访问。

但是,Python确实有一个公认的约定,可以将某些变量标记为“私有",即“该变量供内部使用,您可能不需要触摸它。"该约定是在变量名前添加前缀下划线:

_some_secret_variable = 42

这是对其他程序员的警告。 Python不会阻止您访问此代码,但是下划线建议您不要将其设计为以这种方式使用,因此您应自行承担风险。

有时,这是Python修补隐藏内容的方法。

了解Python中的继承

继承是减少重复代码和重复使用代码的另一种方法。考虑到父子关系,继承允许父母共享通用代码。让我们实现一个继承自父代的电动汽车。

将此代码添加到您的 Vehicle 类下面:

class ElectricCar(Vehicle):  """ Electric vehicle class. """  def charge(self):  print('Zzz')electric_car = ElectricCar()electric_car.charge()electric_car.noise = 'Whoosh'electric_car.drive()

ElectricCar 之后定义了strong>,则在两个方括号内指定了车辆类。这告诉Python ElectricCar Vehicle 的子代。这样,它就可以访问车辆中提供的所有数据和方法。

电动汽车具有自己的特殊方法。它可以充电(其他车辆无法充电)。通过改变汽车的噪音然后驾驶,您可以看到电动汽车发出不同的声音,而您不必定义驱动方法。这是因为驱动器是从父级继承的。

进一步扩展您的Python知识

这些示例说明了OOP在Python中有多么容易。我们仅介绍了基础知识,但是一旦您掌握了这些基础知识,其余的工作就很容易了。

如果您希望继续学习Python,或者将这些OOP技能付诸实践,为什么不看看Python中的数组和列表,或者如何让Python和JavaScript进行通信呢?

如果所有这些都让您想得到更多,那么别忘了查看这些最佳网站学习Python。

标签: 面向对象编程 编程 Python