弗兰的悲惨之旅
99.73M · 2026-04-04
当我们的代码越来越复杂、功能越来越多时,单纯依靠函数和变量会让程序结构变得混乱,难以维护。 此时,面向对象编程(OOP,Object-Oriented Programming) 提供了一种更清晰、更可扩展的组织方式。
它的核心思想是:
比如,我们要描述一辆汽车:
在面向对象的世界中,我们用**类(class)定义这种“模板”,再用对象(object)**来创建实际的实例。
类就像是一个模板或图纸,用来描述某一类事物的共同特征和行为。
举例:
对象是根据类创建出来的具体实例。 类是“抽象的”,对象是“具体的”。
类 → 定义蓝图 对象 → 按照蓝图造出来的东西
类与对象关系如图:
Class(类) → Object(对象)
Car → my_car = Car()
Python 使用 class 关键字定义类。
class Car:
brand = "未定义"
color = "未定义"
def start(self):
print(f"{self.brand} 汽车启动!")
这里:
brand、color 是类的属性;start() 是类的方法。通过类名加括号即可创建对象。
my_car = Car()
此时,my_car 就是 Car 类的一个对象。
我们可以访问属性或调用方法:
my_car.brand = "Tesla"
my_car.color = "红色"
print(my_car.brand) # 输出 Tesla
my_car.start() # 输出 Tesla 汽车启动!
__init__() 构造方法在创建对象时,我们通常希望能够自动初始化对象的属性。
这就需要用到 __init__() 方法(构造函数)。
class Car:
def __init__(self, brand, color):
self.brand = brand # 对象属性
self.color = color
def start(self):
print(f"{self.color} 的 {self.brand} 汽车启动了!")
创建对象时,传入参数:
my_car = Car("Tesla", "红色")
my_car.start()
输出:
红色 的 Tesla 汽车启动了!
__init__ 在创建对象时自动执行;self 表示对象自身;class Dog:
species = "犬科" # 类属性
def __init__(self, name):
self.name = name # 实例属性
访问方式:
d1 = Dog("")
d2 = Dog("小黑")
print(d1.species, d2.species) # 犬科 犬科
print(d1.name, d2.name) # 小黑
类属性是所有实例共享的,而实例属性是每个对象独有的。
| 方法类型 | 定义方式 | 特点 |
|---|---|---|
| 实例方法 | def func(self) | 操作实例数据,是最常用的 |
| 类方法 | @classmethod def func(cls) | 操作类属性,cls 表示类本身 |
| 静态方法 | @staticmethod def func() | 与类无关的通用函数 |
示例:
class MathTool:
PI = 3.14159
def area_circle(self, r):
return MathTool.PI * r * r
@classmethod
def show_pi(cls):
print("圆周率为:", cls.PI)
@staticmethod
def add(a, b):
return a + b
一个对象包含:
以一个“学生”类为例:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def study(self, subject):
print(f"{self.name} 正在学习 {subject}")
stu = Student("小明", 18)
stu.study("Python")
输出:
小明 正在学习 Python
self 代表当前对象的引用。
当你在对象中访问自己的属性或方法时,必须通过 self。
比如:
class Person:
def __init__(self, name):
self.name = name # self.name 是实例属性
def say_hello(self):
print(f"你好,我是 {self.name}")
创建多个对象时:
p1 = Person("张三")
p2 = Person("李四")
p1.say_hello() # 你好,我是 张三
p2.say_hello() # 你好,我是 李四
每个对象都有自己的独立数据。
定义一个类 Book,包含:
title、author、priceshow_info() 输出书籍信息
示例输出:《Python编程实战》 作者:李雷,价格:88元
定义一个类 Account,包含:
deposit()、withdraw()、check_balance()
模拟一个简单的引航账户操作。| 概念 | 说明 |
|---|---|
| 类(Class) | 模板,定义对象的属性和行为 |
| 对象(Object) | 类的实例,是具体的存在 |
__init__() | 构造方法,用于初始化对象 |
self | 表示对象自身 |
| 类属性 | 所有对象共享的属性 |
| 实例属性 | 每个对象独立的属性 |
| 方法类型 | 实例方法 / 类方法 / 静态方法 |