面向对象编程:Python 高级编程的精髓,你还不来学习吗?
- 公众号:人生只不过是一场投资
- 温馨提示:每个笔记文档都会绑定一个笔记资源;手机端可能看不到,网页端请自行下载。
想要代码更优雅、更易维护?快来学习面向对象编程,开启 Python 高级编程之旅!
前言
在编程世界,一直流传着两种截然不同的编程范式:面向过程编程和面向对象编程。
想象一下,你需要建造一座房子:
-
面向过程: 你需要亲力亲为,从搬砖、砌墙、封顶,一步一步地完成所有步骤,就像流水线上的工人,专注于每一个具体的操作。
-
面向对象: 你可以雇佣建筑工人、电工、水管工等专业人员,他们各自负责自己的领域,最终协作完成房屋建造,就像一个团队,每个人都各司其职。
面向对象编程 (OOP) 就像一个“高效的建筑团队”,将程序分解成一个个独立的对象,每个对象都有自己的数据和行为,通过对象之间的交互完成复杂的功能,使代码更易于组织、复用和维护。
一、理解对象:一切皆对象
在 Python 中,一切皆对象!
对象 (Object) 是指现实世界中具体的实体,例如一个人、一辆汽车、一本书等。每个对象都具有属性 (Attribute) 和方法 (Method)。
- 属性:描述对象的特征,例如人的姓名、年龄、身高,汽车的颜色、品牌、型号等。
- 方法:描述对象的行为,例如人可以吃饭、睡觉、工作,汽车可以启动、加速、刹车等。
# 创建一个名为 person 的字典,表示一个人
person = {
"name": "Alice",
"age": 30,
"city": "New York"
}
# 打印 person 的属性
print(person["name"]) # 输出:Alice
print(person["age"]) # 输出:30
# 使用函数模拟 person 的方法
def say_hello(person):
print(f"Hello, my name is {person['name']}.")
say_hello(person) # 输出:Hello, my name is Alice.
二、类:对象的“ blueprints”
类 (Class) 是对象的“ blueprints”,定义了对象的属性和方法。
例如,“狗”是一个类,它定义了狗共有的属性(姓名、年龄等)和方法(吃饭、睡觉等)。
class Dog:
"""模拟一只狗"""
def __init__(self, name, age):
"""初始化属性 name 和 age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗坐下"""
print(f"{self.name} is now sitting.")
def roll_over(self):
"""模拟小狗打滚"""
print(f"{self.name} rolled over!")
三、创建和使用对象:实例化
根据类创建对象的过程称为实例化 (Instantiation)。
# 创建两个 Dog 实例
my_dog = Dog('Willie', 6)
your_dog = Dog('Lucy', 3)
# 访问对象的属性
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")
# 调用对象的方法
my_dog.sit()
my_dog.roll_over()
print(f"\nYour dog's name is {your_dog.name}.")
print(f"Your dog is {your_dog.age} years old.")
your_dog.sit()
四、继承:代码复用的“利器”
继承 (Inheritance) 就像家族血统一样,子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。
class Car:
"""车的类"""
def __init__(self, make, model, year):
pass
class ElectricCar(Car):
"""电动车的独特之处"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)
self.battery_size = 75
def describe_battery(self):
"""打印电池容量信息"""
print(f"This car has a {self.battery_size}-kWh battery.")
my_tesla = ElectricCar('tesla', 'model s', 2019)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
五、封装、多态:OOP 的重要支柱
-
封装 (Encapsulation): 将对象的内部实现细节隐藏起来,只对外提供公共接口,就像一个“黑盒子”,用户只需要知道如何使用它,而不需要了解它的内部构造。
-
多态 (Polymorphism): 同一种行为,不同的对象表现出不同的形式。例如,猫和狗都是动物类,他们都会“叫”,但猫的叫声是“喵喵”,而狗的叫声是“汪汪”。
六、总结:
面向对象编程是 Python 高级编程的精髓,它可以让你的代码更易于组织、复用和维护, 是编写大型项目的必备技能。
- 对象 是 OOP 的核心,一切皆对象。
- 类 是对象的“蓝图”,定义了对象的属性和方法。
- 继承 可以实现代码复用,提高开发效率。
- 封装 和 多态 是 OOP 的重要支柱,保证了代码的健壮性和可扩展性。
从现在开始,拥抱面向对象编程,开启你的 Python 高级编程之旅吧!