本教程通过示例概述了 Python 中的面向对象编程 (OOP)。这是一个分步指南,专为没有编程经验的人设计。面向对象编程很流行,除了 Python 之外,还可以使用其他编程语言,如 Java、C++、PHP。
目录
什么是面向对象编程?
在面向对象编程 (OOP) 中,您可以灵活地在代码中表示现实世界的对象,如汽车、动物、人、ATM 等。简单来说,物体就是具有一定特征、能够执行一定功能的东西。例如,汽车是一个物体,可以执行启动、停止、驱动和制动等功能。这些都是汽车的功能。特征是汽车的颜色、里程、最高速度、车型年份等。在上面的例子中,car 是一个object
. 在 OOP 世界中调用函数methods
。特点是attributes (properties)
。从技术上讲,属性是与对象状态相关的变量或值,而方法是影响对象属性的函数。
数据科学家使用面向对象编程吗?
这是数据科学家在学习 OOP 之前最常见的问题之一。当涉及到使用 Python 进行数据操作和机器学习时,通常建议学习pandas、numpy、matplotlib、 scikit-learn 库。这些库由经验丰富的 Python 开发人员编写,用于自动化或简化与数据科学相关的大多数任务。所有这些库都依赖于 OOP 及其概念。例如,您正在使用 scikit-learn 库构建回归模型。您首先必须将模型声明为对象,然后使用 fit 方法。如果不了解 OOP 的基础知识,您将无法理解为什么以这种方式编写代码。在Python中,主要有3种编程风格,即面向对象编程、函数式编程和过程式编程。简单来说,Python 中有 3 种不同的方法来解决这个问题。函数式编程因其性能优势而在数据科学家中最受欢迎。当您使用大型代码库并且代码可维护性非常重要时,OOP 非常有用。
结论:学习 OOP 基础知识很有好处,这样您就可以了解所使用的库背后的原理。如果你的目标是成为一名优秀的 Python 开发人员并想要构建 Python 库,你需要学习 OOP(必须!)。与此同时,有许多数据科学家不了解 OOP 概念,但仍然在工作中表现出色。
基础知识:Python 中的 OOP
在本节中,我们将详细了解 Python 中与 OOP 相关的概念。对象和类
类是对象的架构。它是对类的属性和方法的正确描述。例如,同一类型的汽车的设计是一个类。您可以从一个类创建许多对象。就像您可以通过设计汽车来制造许多相同类型的汽车一样。有许多真实世界的类示例,如下所述 -
- 煎蛋卷的食谱是一类。煎蛋卷是一个对象。
- 银行账户持有人是一个类。属性有名字、姓氏、出生日期、职业、地址等。方法可以是“更改地址”、“更改职业”、“更改姓氏”等。“更改姓氏”一般适用于女性结婚后更改姓氏
- 狗是一个类。属性包括品种、腿数、大小、年龄、颜色等。方法可以是吃、睡、坐、吠、跑等。
在Python中,我们可以使用关键字创建一个类class
。类的方法可以通过关键字定义def
。它与普通函数类似,但它是在类中定义的,并且是类的函数。方法定义中的第一个参数始终为self
,并且在没有该参数的情况下调用方法self
。
示例 1:创建汽车类
class
: 车attributes
:年份、英里数和速度methods
:加速和制动object
: 汽车1class
: carattributes
: year, mpg and speedmethods
: accelerate and brakeobject
: car1
车类: # 属性 Year = 2016 # 车型年份 mpg = 20 # 里程 speed = 100 # 当前速度 # 方法 def 加速(自身): 回程车速度+20 默认制动(自制动): 返回车速 - 50
class car: # attributes year = 2016 # car model's year mpg = 20 # mileage speed = 100 # current speed # methods def accelerate(self): return car.speed + 20 def brake(self): return car.speed - 50
要提交方法,我们需要使用圆括号。汽车1=汽车() car1.accelerate() 120 car1.brake() 50 汽车1年 2016年 car1.mpg 20 汽车1.速度 100
car1=car() car1.accelerate() 120 car1.brake() 50 car1.year 2016 car1.mpg 20 car1.speed 100
示例 2:创建公司类别
在下面的示例中,我们创建一个名为 company 的类。这里的属性是名称、营业额、收入和在公司工作的员工人数。方法是每个员工产生的收入(出于演示目的,我们将其称为生产力)。
# 创建公司类 类公司: # 属性 名称 =“XYZ 银行” 营业额 = 5000 收入 = 1000 员工人数 = 100 # 方法 定义生产力(自我): 返回 Company.revenue/Company.no_of_employees
# Creates class Company class Company: # attributes name = "XYZ Bank" turnover = 5000 revenue = 1000 no_of_employees = 100 # method def productivity(self): return Company.revenue/Company.no_of_employees
可以提取在方法外部定义的属性,而无需创建对象。
公司名称 输出 “XYZ 银行” 公司营业额 输出 5000 Company.no_of_employees 输出 100 公司().生产力() 输出 10.0
Company.name Output 'XYZ Bank' Company.turnover Output 5000 Company.no_of_employees Output 100 Company().productivity() Output 10.0
构造函数
构造函数是一种特殊的方法。您可以将其视为初始化或激活对象的类的属性或属性的函数。使用关键字__init__
为构造函数创建方法。在上一节中,我们讨论了汽车作为对象的示例。您可以将构造函数视为所需的整个操作序列,以便工厂根据类