Python 类、对象与self的核心解析
在Python中,类的标准写法遵循“先定义属性、再实现方法”的逻辑,核心框架如下:
用 __init__ 方法定义属性(描述“这个事物拥有什么”);
以“手机”为例,完整代码实现如下,兼顾可读性与Python编程规范:
class 手机:# 第一步:通过__init__方法定义对象的属性(初始化属性)def__init__(self, 颜色, 价格):# 将传入的属性值,绑定到当前创建的对象自身 self.颜色 = 颜色 self.价格 = 价格# 第二步:定义方法(对象可执行的操作)def 开机(self):# 通过self调用当前对象的属性,实现方法逻辑 print(f"{self.颜色}手机开机了")def 介绍(self):# 同理,通过self获取当前对象的属性并输出 print(f"颜色:{self.颜色},价格:{self.价格}元")# 按“手机”类(模板)创建具体对象(实例)# 1. 造一台红色手机(对象phone1)phone1 = 手机("红色", 2999) # 此时__init__中的self,就代表新创建的phone1对象# 2. 造一台蓝色手机(对象phone2)phone2 = 手机("蓝色", 3999) # 此时__init__中的self,就代表新创建的phone2对象# 访问对象的属性、调用对象的方法print(phone1.颜色) # 直接通过“对象.属性”访问属性值phone1.开机() # 调用phone1的开机方法,self自动指向phone1phone2.开机() # 调用phone2的开机方法,self自动指向phone2
核心逻辑可视化(类与对象的关系)
类(模板)是抽象的“规则”,规定了对象拥有的属性和可执行的方法;对象是按照模板创建的具体实例,每个对象拥有独立的属性值。
核心概念梳理
类:抽象的模板,定义了一类事物的共同属性和方法(如“手机”类,规定所有手机都有颜色、价格,能开机、能介绍);
对象:按照类模板创建的具体实例,是可操作、有具体属性值的“实体”(如phone1、phone2,是两台具体的手机);
属性:对象身上的具体信息,是对象的“数据”(如手机的颜色、价格);
方法:对象可执行的操作,是对象的“功能”(如手机的开机、介绍);
self:始终代表“当前操作的对象本身”,是连接类与对象的核心桥梁。
self的核心作用
self的作用只有两个,贯穿类与对象的整个使用过程,缺一不可:
当我们执行 phone1 = 手机("红色", 2999) 时,Python会自动调用类中的 __init__ 方法,相当于执行:手机.__init__(phone1, "红色", 2999)。
此时,self 就代表刚刚创建出来的 phone1 对象,而 self.颜色 = 颜色、self.价格 = 价格,本质就是把传入的“红色”“2999”这两个值,绑定到 phone1 自身,让phone1拥有了专属的属性值。
当我们执行 phone1.开机() 时,Python会自动将 phone1 作为参数传入 开机 方法,相当于执行:手机.开机(phone1)。
此时,方法中的 self 就等于 phone1,因此 print(f"{self.颜色}手机开机了"),本质就是 print(f"{phone1.颜色}手机开机了"),确保方法能精准操作当前对象的属性。
整体逻辑总结
我们先定义“手机”这个类(模板),明确手机必须有颜色、价格两个属性,以及开机、介绍两个方法;随后按照这个模板,创建出phone1(红色、2999元)和phone2(蓝色、3999元)两个具体对象;最后调用对象的方法时,self会自动定位到当前操作的对象,确保每个对象能正确执行自己的功能、调用自己的属性。
认真写、乐分享,欢迎大家 点赞、分享、推荐 ~~