不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。
python系列之面向对象编程
python系列前期章节
- python系列之注释与变量
- python系列之输入输出语句与数据类型
- python系列之运算符
- python系列之控制流程语句
- python系列之字符串
- python系列之列表
- python系列之元组
- python系列之字典
- python系列之集合
- python系列之函数基础
- python系列之函数进阶
- python系统之综合案例1:用python打造智能诗词生成助手
- python系列之综合案例2:用python开发《魔法学院入学考试》文字冒险游戏
导语:为什么你的代码需要「对象」?
假设你要开发一款模拟人生的游戏,需要创建100个角色。如果每个角色的吃饭、睡觉、工作代码都重复写100遍,你会不会崩溃?
面向对象编程(OOP) 就是为解决这类问题而生——它让你像工厂流水线一样「批量生产」功能相似的对象。本文用「人类基因库」的比喻,带你轻松理解Python类与对象!
一、面向对象概念
面向对象是一种抽象化的编程思想,很多编程语言中都有的一种思想。一切皆对象,其有三大特性:封装、继承和多态。
a、类:是对一系列具有相同特征和行为的事物的统称,比如动物
b、对象:对象是基于类创建出来的真实存在的事物。比如猫、狗
二、人类基因库:类(Class)是什么?
类 = 基因蓝图
想象你是一个“造物主”,要设计一种新生物——人类。你会先定义他们的共同特征和行为:
- 特征(属性):眼睛颜色、身高、体重
- 行为(方法):吃饭、跑步、说话
在Python中,这种“基因模板”就叫类(Class)。
# 使用关键字class定义类
class Human:
# 初始化方法:赋予每个"人"初始属性(构造函数),函数括号里是形参
def __init__(self, name, eye_color):
self.name = name # 姓名(实例属性)
self.eye_color = eye_color # 眼睛颜色
self.energy = 100 # 初始能量值
# 定义行为:方法(函数)
def eat(self, food):
print(f"{self.name}正在吃{food}")
self.energy += 20
def run(self):
if self.energy >= 15:
print(f"{self.name}狂奔中!")
self.energy -= 15
else:
print("能量不足,请进食!")
关键解析
__init__
:构造方法,用于设置对象的初始属性(类似设定DNA)。self
:代表类的当前实例,相当于说“我自己”。self.energy
:实例属性,每个对象的energy值独立存在。- 类的命名规范:要满足标识符命名规则,同时遵循:大驼峰命名习惯。
二、克隆人实验:从类创建对象(Object)
对象 = 根据蓝图制造的个体
有了Human
类后,你可以像克隆人一样批量制造具体角色:
# 创建两个「人」对象
alice = Human("爱丽丝", "蓝色") # 调用__init__方法
mh = Human("明翰", "棕色")
print(alice.eye_color) # 输出:蓝色
mh.run() # 输出:明翰狂奔中!
alice.eat("披萨") # 爱丽丝正在吃披萨
发生了什么?
alice = Human(...)
:根据Human
类创建一个实例(对象)。self
自动指向alice
,mh
同理——这就是为什么每个对象属性独立。
三、实战:用OOP开发【员工管理系统】
需求:假设你要管理公司员工,每个员工有姓名、工号、部门,且能办理入职、打印信息。
1. 定义Employee
类
# 定义员工类
class Employee:
# 初始化一些参数
def __init__(self, name, emp_id, department):
self.name = name
self.emp_id = emp_id
self.department = department
self.status = "待入职"
# 办理入职业务
def onboard(self):
self.status = "已入职"
print(f"{self.name}(工号{self.emp_id})已加入{self.department}部门")
# 查看员工信息
def print_info(self):
print(f"员工信息:{self.name} | {self.emp_id} | {self.department}")
2. 创建并管理对象
# 创建员工实例
emp1 = Employee("张三", "1001", "技术部")
emp2 = Employee("李四", "1002", "市场部")
# 调用函数
emp1.onboard() # 张三(工号1001)已加入技术部部门
emp2.print_info() # 员工信息:李四 | 1002 | 市场部
四、常见问题答疑
Q1:什么时候该用类?
- 当需要管理多个具有相同属性和行为的对象时(如游戏角色、用户数据)。
- 当代码需要模块化,避免函数和变量散落各处。
Q2:类和模块有什么区别?
- 类是对象的模板,模块是代码的组织单元(一个.py文件)。
Q3:为什么要有self?
- 为了明确哪个对象在调用方法。就像对讲机通话时说“我是张三”一样必要。
五、动手挑战:升级你的代码
- 为
Employee
类添加salary
属性和raise_salary
方法 - 创建
Manager
类继承Employee
,并添加team
属性 - 尝试使用私有属性保护敏感数据
通过将现实世界映射到代码,OOP让复杂问题变得直观。现在,尝试用类与对象重构你之前的项目吧!
本人才学尚浅,本章里有不足之处,还望指教。【下一章:详解面向对象之属性与函数】