当前位置:首页>python>Python面向对象基础:类与对象的概念

Python面向对象基础:类与对象的概念

  • 2026-10-11 08:40:02
Python面向对象基础:类与对象的概念

Python的核心编程思想是面向对象,它能解决“面向过程”代码冗余、维护困难的问题,而类与对象,正是面向对象编程的“基石”。

今天就带大家从零吃透Python面向对象基础,重点拆解类与对象的核心概念,用通俗比喻+实战代码,让新手也能轻松理解,彻底告别“面向过程”的代码困境!

📌 先搞懂:什么是类?什么是对象?

类和对象是面向对象编程中最基础、最核心的两个概念,很多新手会混淆两者的关系,其实用一个通俗的比喻就能秒懂,全程无复杂术语。

1. 类:抽象的“模板”

类(Class)是抽象的模板,用来定义同一类事物的共同特征(属性)和共同行为(方法)。它不具体存在,只是一个“规范”,告诉我们这类事物应该有什么、能做什么。

举个例子:

我们可以定义一个“学生类”,这个类就相当于一份“学生模板”——它规定了学生都应该有姓名、年龄、班级这些“特征”(属性),也规定了学生能听课、写作业、提交报告这些“行为”(方法)。

再比如:汽车设计图就是一个“类”,它规定了汽车要有轮子、发动机、方向盘(属性),能前进、刹车、转弯(方法);但设计图本身不是一辆真正的汽车,只是一个模板。

在Python中,用class关键字定义类,类名遵循“大驼峰命名法”(首字母大写,多个单词首字母均大写),比如Student、Car,这是行业通用规范,便于区分和阅读。

2. 对象:类的“具体实例”

对象(Object/Instance)是类的具体实例,是内存中实际存在的实体。它按照类的模板创建,拥有类中定义的所有属性和方法,是“模板的具体实现”。

还是用刚才的例子:

“学生类”是模板,那么“小明(姓名)、15岁(年龄)、初一(1)班(班级),会听课、写作业”,就是一个具体的“学生对象”;“小红、15岁、初一(1)班”,也是一个“学生对象”。

对应汽车的例子:根据汽车设计图生产出来的每一辆具体的汽车,就是“对象”——每辆车都有轮子、发动机(符合类的属性),也能前进、刹车(符合类的方法),但每辆车的颜色、车牌号可能不同,这就是对象的“个性化”。

简单总结:类是模板,对象是模板造出来的具体事物;一个类可以创建无数个对象,所有对象都拥有类的共性,同时可以有自己的个性。

🔧 核心实操:从定义类到创建对象(超简单)

理解了类与对象的概念,接下来就是实战操作——用Python定义类、创建对象,全程3步,新手跟着敲代码就能上手,无需复杂逻辑。

1. 第一步:定义类(创建“模板”)

用class关键字定义类,类中主要包含两部分:属性(描述特征)和方法(描述行为)。其中,__init__是类的“构造方法”,创建对象时会自动执行,用来初始化对象的属性。

示例(定义“学生类”):

# 定义学生类,类名首字母大写(大驼峰命名法)class Student:    # __init__构造方法:创建对象时自动执行,初始化属性    # self是必传参数,代表“当前对象”,后续参数为对象的属性    def __init__(self, name, age, class_num):        # 给当前对象绑定属性:self.属性名 = 参数        self.name = name  # 姓名属性        self.age = age    # 年龄属性        self.class_num = class_num  # 班级属性    # 自定义方法1:描述“听课”行为(对象的能力)    def attend_class(self):        # 通过self.属性名,调用当前对象的属性        print(f"{self.name}({self.age}岁,{self.class_num})正在听Python课")    # 自定义方法2:描述“写作业”行为    def do_homework(self):        print(f"{self.name}正在写{self.class_num}的数学作业")

关键说明:

-self:类中所有方法的第一个必传参数,代表“当前正在操作的对象”,无需手动传递,Python会自动赋值;

- __init__:无需手动调用,创建对象时自动执行,核心作用是给对象绑定属性,避免创建后重复赋值;

- 方法:定义在类中的函数,用来描述对象的行为,调用时需要通过对象来触发。

2. 第二步:创建对象(实例化模板)

创建对象(也叫“实例化对象”),只需调用类名,并传入__init__方法中要求的属性参数(无需传self),就像用模板造具体的事物一样。

示例(基于Student类创建3个学生对象):

# 实例化第一个对象:小明(传入姓名、年龄、班级参数)xiaoming = Student(name="小明", age=15, class_num="初一(1)班")# 实例化第二个对象:小红xiaohong = Student(name="小红", age=15, class_num="初一(1)班")# 实例化第三个对象:小刚xiaogang = Student(name="小刚", age=16, class_num="初一(2)班")

此时,xiaoming、xiaohong、xiaogang就是3个独立的学生对象,它们都拥有Student类的属性(name、age、class_num)和方法(attend_class、do_homework),但属性值不同(个性化)。

3. 第三步:调用对象的属性和方法

创建对象后,我们可以通过“对象名.属性名”获取对象的属性,通过“对象名.方法名()”调用对象的方法,实现具体的功能。

示例(操作上面创建的3个对象):

# 1. 调用对象的属性(获取对象的特征)print("小明的信息:", xiaoming.name, xiaoming.age, xiaoming.class_num)# 输出:小明的信息: 小明 15 初一(1)班# 2. 调用对象的方法(触发对象的行为)xiaohong.attend_class()  # 输出:小红(15岁,初一(1)班)正在听Python课xiaoming.do_homework()   # 输出:小明正在写初一(1)班的数学作业xiaogang.attend_class()  # 输出:小刚(16岁,初一(2)班)正在听Python课

这里可以明显看到:3个对象调用同一个方法(attend_class),输出的结果不同,因为它们的属性值(name、age、class_num)不同——这就是“类的共性”和“对象的个性”的体现。

❌ 新手必避的4个类与对象坑(附解决方案)

刚开始接触类与对象,新手很容易踩坑,导致代码报错,以下4个常见坑,提前避开,能节省大量调试时间,附具体解决方案。

  • 坑1:定义类时,忘记写__init__方法,无法给对象赋值属性。 解决方案:如果需要给对象绑定属性,必须定义__init__方法,且第一个参数必须是self;如果不需要属性,可省略__init__(Python会自动生成空的构造方法)。

  • 坑2:调用方法时,手动给self传参,导致报错。 解决方案:self是Python自动赋值的,代表当前对象,调用方法时无需传递self,只需传递其他必要参数(如果有)。

  • 坑3:类名用小写字母命名(比如student),不符合规范,且容易和变量名混淆。 解决方案:严格遵循大驼峰命名法,类名首字母大写,比如Student、Car,变量名用小写(比如xiaoming),区分清晰。

  • 坑4:创建对象时,漏传__init__方法要求的属性参数,导致报错。 解决方案:创建对象时,必须传入__init__方法中除self外的所有参数,参数顺序可与定义时一致,或用关键字参数(如name="小明")指定。

💡 实战案例:完整演示类与对象的使用

结合上面的知识点,我们做一个完整实战:定义一个“小狗类”,封装小狗的属性和行为,然后创建对象、调用方法,新手跟着操作,就能彻底掌握类与对象的核心用法。

# 1. 定义小狗类class Dog:    # 初始化属性:名字、品种、年龄    def __init__(self, name, breed, age):        self.name = name    # 名字        self.breed = breed  # 品种        self.age = age      # 年龄    # 方法1:小狗叫    def bark(self):        print(f"{self.name}({self.breed},{self.age}岁)汪汪叫~")    # 方法2:小狗进食    def eat(self, food):        print(f"{self.name}正在吃{food}")# 2. 创建2个小狗对象dog1 = Dog(name="旺财", breed="中华田园犬", age=3)dog2 = Dog(name="富贵", breed="金毛", age=2)# 3. 调用对象的属性和方法print("小狗1信息:", dog1.name, dog1.breed, dog1.age)# 输出:小狗1信息: 旺财 中华田园犬 3dog1.bark()  # 输出:旺财(中华田园犬,3岁)汪汪叫~dog2.eat("狗粮")  # 输出:富贵正在吃狗粮

运行代码后,就能看到两个小狗对象的属性和行为输出,整个逻辑清晰易懂,没有复杂冗余的代码——这就是面向对象的优势:代码复用、逻辑清晰,后续再添加小狗对象,只需一行代码即可。

📝 核心总结

Python面向对象的核心,就是“类”和“对象”:

1.  类是抽象模板,定义同一类事物的共性(属性+方法),不具体存在;

2.  对象是类的具体实例,拥有类的所有属性和方法,是实际存在的实体;

3.  核心优势:代码复用(一个类可创建无数对象)、逻辑清晰(属性和方法封装在一起)、便于维护(修改类的逻辑,所有对象同步生效)。

对于新手来说,不用一开始就追求复杂的面向对象用法,先掌握“定义类→创建对象→调用属性和方法”这3个核心步骤,理解类与对象的关系,再慢慢深入学习继承、封装、多态等进阶知识点。

✨ 小任务:定义一个“计算器类”,包含加法、减法、乘法、除法4个方法,然后创建计算器对象,调用这4个方法,测试计算效果。

读懂代码的骨架,驾驭AI的血肉,做数字时代的超级个体🔥

最新文章

随机文章