Python 面向对象编程详解
概述
面向对象编程(OOP)是一种编程思想,它以对象为基础,构建在面向过程编程之上。OOP通过将复杂的问题分解成多个简单的对象,使得代码更加模块化、易于理解和维护。面向对象编程的三大思想特点包括:
总结而言,面向对象编程的核心思想是“万物皆对象”。
相关名词
- 类(Class):类和对象是面向对象编程中的核心概念。类是对具有相同属性和行为的对象的抽象描述,是一个看不见、摸不着的抽象概念。
- 对象(Object):对象是类的具体体现或实例。每个对象都拥有类定义的属性和行为。
- 属性(Attribute):属性用于描述对象的外在特征,是名词性质的。例如,人的姓名、年龄、性别等都是属性。
- 行为(Behavior):行为表示对象能够执行的操作,是动词性质的。例如,人能够吃饭、睡觉、学习等。
基本格式
定义类的格式:
class 类名:
# 属性
# 行为(方法)
class 类名():
pass
class 类名(object):
pass
如何使用类中的成员:
- 类内:使用
self.
的方式调用成员。 - 类外:首先创建类的对象,然后使用
对象名.
的方式调用属性或方法。
self:
- 概述:
self
是Python内置的一个属性,用于表示类实例的引用。 - 特点/作用:在类的方法中,
self
代表调用该方法的对象。通过self
可以访问对象的属性和其他方法。
魔法方法
魔法方法是Python内置的函数,它们在特定的场景下会自动被调用,无需手动调用。
__init__()
:用于初始化对象的属性值。在创建对象时自动调用。__str__()
:用于快速打印对象的各个属性值。在直接打印对象时自动调用。__del__()
:删除对象时会自动调用,用于释放空间。
三大特征
- 继承(Inheritance):
- 概述:继承是面向对象编程的一个重要特征,它允许我们定义一个类(父类)来包含多个类(子类)共有的属性和行为。子类可以继承父类的属性和方法,也可以添加或重写自己的属性和方法。
- 格式:
class 子类名(父类名):
- 好处:提高代码的复用性和可维护性。
- 弊端:增加了类之间的耦合性。
- 几种写法:单继承、多继承。
- 封装(Encapsulation):
- 概述:封装是隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
- 好处:提高代码的安全性和复用性。
- 私有化:使用双下划线(
__
)前缀的属性和方法只能在类内部访问,外界需要通过公共的访问方式(如get_xxx()
和set_xxx()
方法)来访问。
- 多态(Polymorphism):
- 概述:多态是指同一个事物在不同时刻表现出来的不同形态或状态。在Python中,多态体现为同一个函数接收不同参数时,能够表现出不同的行为。
- 前提:继承、方法重写、父类引用指向子类对象。
- 好处:提高代码的可维护性,实现调用者和业务(被调用者)的分离。
几个名词的深入
- 属性:
__dict__
属性:Python内置属性,每个对象都默认拥有,可以将对象的属性和属性值封装成字典形式。- 类属性与对象属性:类属性属于类本身,所有对象共享;对象属性属于单个对象。
- 方法:
- 静态方法(
@staticmethod
):属于每个对象的方法,可以共享,但无特殊参数要求。 - 类方法(
@classmethod
):属于类的方法,可以被每个对象共享,调用时必须传入类的引用作为第一个参数。
综合案例
面向对象编程在实际开发中有着广泛的应用,以下是一些常见的综合案例:
- 汽车类:包含品牌、型号、颜色等属性,以及启动、行驶等行为。
- 手机类:包含品牌、型号、电量等属性,以及拨打电话、发送短信等行为。
- 减肥案例:通过面向对象的方式模拟减肥过程,包括设置目标体重、记录饮食、运动等行为。
- 烤地瓜案例:模拟烤地瓜的过程,包括选择地瓜、设置温度、烤制时间等行为。
- 摊煎饼果子案例:模拟摊煎饼果子的过程,包括准备食材、制作煎饼、加料等行为。
- 战斗机案例:模拟战斗机的属性和行为,如起飞、降落、攻击等。
- 空调案例:模拟空调的控制过程,包括设置温度、风速、模式等行为。
- 面向对象版-学生管理系统:通过面向对象的方式实现一个学生管理系统,包括学生信息的增删改查等功能。
通过这些案例,可以更深入地理解面向对象编程的思想和实际应用。