Python编程实战 | 面向对象与进阶语法-类与对象的概念

一、引言:为什么需要"面向对象"?

当我们的代码越来越复杂、功能越来越多时,单纯依靠函数和变量会让程序结构变得混乱,难以维护。 此时,面向对象编程(OOP,Object-Oriented Programming) 提供了一种更清晰、更可扩展的组织方式。

它的核心思想是:

把现实世界的事物抽象成程序中的"对象",对象包含了数据(属性)和行为(方法)。

比如,我们要描述一辆汽车:

  • 它有颜色、品牌、速度(这些是"属性");
  • 它能启动、加速、刹车(这些是"行为")。

在面向对象的世界中,我们用**类(class)定义这种"模板",再用对象(object)**来创建实际的实例。


二、类(Class)与对象(Object)的关系

1. 类是什么?

就像是一个模板或图纸,用来描述某一类事物的共同特征和行为。

举例:

  • 类:汽车(Car)
  • 属性:品牌、颜色、速度
  • 方法:启动、加速、刹车

2. 对象是什么?

对象是根据类创建出来的具体实例。 类是"抽象的",对象是"具体的"。

类 → 定义蓝图 对象 → 按照蓝图造出来的东西

类与对象关系如图:

ini 复制代码
Class(类) → Object(对象)
Car         → my_car = Car()

三、定义一个类

Python 使用 class 关键字定义类。

python 复制代码
class Car:
    brand = "未定义"
    color = "未定义"

    def start(self):
        print(f"{self.brand} 汽车启动!")

这里:

  • brandcolor 是类的属性;
  • start() 是类的方法。

四、创建对象(实例化)

通过类名加括号即可创建对象。

python 复制代码
my_car = Car()

此时,my_car 就是 Car 类的一个对象。

我们可以访问属性或调用方法:

python 复制代码
my_car.brand = "Tesla"
my_car.color = "红色"

print(my_car.brand)  # 输出 Tesla
my_car.start()       # 输出 Tesla 汽车启动!

五、__init__() 构造方法

在创建对象时,我们通常希望能够自动初始化对象的属性 。 这就需要用到 __init__() 方法(构造函数)。

python 复制代码
class Car:
    def __init__(self, brand, color):
        self.brand = brand      # 对象属性
        self.color = color

    def start(self):
        print(f"{self.color} 的 {self.brand} 汽车启动了!")

创建对象时,传入参数:

python 复制代码
my_car = Car("Tesla", "红色")
my_car.start()

输出:

复制代码
红色 的 Tesla 汽车启动了!

📘 说明:

  • __init__ 在创建对象时自动执行;
  • self 表示对象自身;
  • 每个对象都有自己独立的属性。

六、类属性与实例属性

1. 类属性(所有对象共享)

python 复制代码
class Dog:
    species = "犬科"  # 类属性

    def __init__(self, name):
        self.name = name  # 实例属性

访问方式:

python 复制代码
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() 与类无关的通用函数

示例:

python 复制代码
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

八、对象的行为与状态

一个对象包含:

  • 属性(状态):描述对象的特征;
  • 方法(行为):描述对象能做什么。

以一个"学生"类为例:

python 复制代码
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 代表当前对象的引用 。 当你在对象中访问自己的属性或方法时,必须通过 self

比如:

python 复制代码
class Person:
    def __init__(self, name):
        self.name = name  # self.name 是实例属性

    def say_hello(self):
        print(f"你好,我是 {self.name}")

创建多个对象时:

python 复制代码
p1 = Person("张三")
p2 = Person("李四")

p1.say_hello()  # 你好,我是 张三
p2.say_hello()  # 你好,我是 李四

每个对象都有自己的独立数据。


十、实践练习

  1. 定义一个类 Book,包含:

    • 属性:titleauthorprice

    • 方法:show_info() 输出书籍信息 示例输出:

      《Python编程实战》 作者:李雷,价格:88元

  2. 定义一个类 Account,包含:

    • 属性:用户名、余额
    • 方法:deposit()withdraw()check_balance() 模拟一个简单的银行账户操作。

十一、小结

概念 说明
类(Class) 模板,定义对象的属性和行为
对象(Object) 类的实例,是具体的存在
__init__() 构造方法,用于初始化对象
self 表示对象自身
类属性 所有对象共享的属性
实例属性 每个对象独立的属性
方法类型 实例方法 / 类方法 / 静态方法

十二、总结一句话

类是图纸,对象是房子。 用类设计结构,用对象去创造世界。


相关推荐
IT学长编程4 小时前
计算机毕业设计 基于Python的电商用户行为分析系统 Django 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·django·毕业设计·课程设计·电商用户行为分析系统
国服第二切图仔4 小时前
Rust开发之自定义错误类型(实现Error trait)
开发语言·python·rust
IT_陈寒4 小时前
Redis性能翻倍的5个冷门技巧,90%的开发者都不知道第3个!
前端·人工智能·后端
雨中散步撒哈拉4 小时前
14、做中学 | 初二上期 Golang集合Map
开发语言·后端·golang
Geoking.4 小时前
PyTorch 中 Tensor 交换维度(transpose、permute、view)详解
人工智能·pytorch·python
陈老师还在写代码4 小时前
springboot 打包出来的 jar 包的名字是在哪儿决定的
spring boot·后端·jar
咚咚王者4 小时前
人工智能之编程基础 Python 入门:第四章 条件循环与异常
人工智能·python
熊小猿13 小时前
在 Spring Boot 项目中使用分页插件的两种常见方式
java·spring boot·后端
paopaokaka_luck13 小时前
基于SpringBoot+Vue的助农扶贫平台(AI问答、WebSocket实时聊天、快递物流API、协同过滤算法、Echarts图形化分析、分享链接到微博)
java·vue.js·spring boot·后端·websocket·spring