1.Python面向对象基础
面向对象(OOP)
面向对象编程--object oriented programming 简写 OOP
面向过程和面向对象的区别:
面向过程:
1.把完成某一个需求的所有步骤从头到尾逐步实现
2.根据开发需求,将某些功能独立的代码封装成一个又一个函数
3.最后完成的代码,就是顺序的调用不同的函数
特点:
1.注重步骤与过程,不注重职责分工
2.如果需求复杂,代码会变的很复杂
3.开发复杂项目,没有固定的套路, 开发难度很大
面向对象:
相比较函数,面向对象是更大的封装,根据职责中一个对象中封装多个方法
1.在完成某个需求前,首先确定职责--要做的事情(方法)
2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)
3.最后完成的代码,就是顺序地让不同对象调用不同的方法
特点:
1.注重对象和职责,不同的对象承担不同的职责
2.更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
3.需要在面向过程基础上,再学习一些面向对象的语法
类和对象的概念
类:
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
特征被称为属性
行为被称为方法
类是负责创建对象的
对象:
对象是由类创建出来的一个具体存在,可以直接使用
由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法
类和对象的关系
类是模版,对象是根据类这个模版创建出来的,应该先有类,再有对象
类只有一个,而对象可以有很多个
不同对象直接属性可能各不相同
类中定义了什么属性和方法,对象中就有什么属性和方法
类的设计
在使用面向对象开发之前,应该首先分析需求,确定一下呈现中需要包含哪些类
在程序开发中,要设计一个类,通常需要满足三个要素
1.类名:这类事物的名字,满足大驼峰命名法
2.属性:这类事物具有什么样的特征
3.方法:这类事物具有什么样的行为
属性方法的确定
对对象的特征描述,通常可以定义为属性
对象具有的行为,通常可以定义为方法
PS:需求中没有涉及的属性或者方法在设计类时,不需要考虑
面向对象基础语法:
dir()内置函数:使用内置函数dir传入标识符/数据,可以查看对象内的所有属性和方法。dir(对象名)
提示__方法名__格式的方式是python提供的内置方法/属性 也成为魔法方法
常用:
定义只包含方法的类:
格式:
创建对象
当一个类定义完成之后,要使用这个类来创建对象,语法格式如下
对象变量 = 类名()
格式练习:
在面向对象开发中,引用概念同样适用
在python中使用类创建对象之后,tom变量中仍然记录的是对象在内存中的地址
页就是tom变量引用了新建的猫对象
使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)
id()函数:
用于获取对象的内存地址
格式:id(对象名)
%d可以以10进制输出数字
%x可以以16进制输出数字
一个类可以创建多个不同的对象,是不同的两个对象,指向不同的内存地址
给对象增加属性
在python中,要给对象设置属性,非常的容易,但是不推荐使用,因为对象属性封装应该封装中类的内部
只需要在类的外部代码中直接通过.设置一个属性即可
self参数
哪一个对象调用的方法,self就是哪一个对象的引用
在类封装方法内部,self就表示调用方法的对象自己
调用方法时,程序不需要传递self参数
在方法内部
可以通过self.访问对象的属性
也可以通过self.调用其他的对象方法
在类的外部给对象增加属性存在的问题,将name属性写到调用方法下面
属性错误,对象没有name属性
在日常开发中,不推荐在类的外部给对象增加属性,因为在运行时,找不到属性,程序会报错
对象应该包含哪些属性,应该封装在类的内部
初始化方法
当使用类名()创建对象时,会自动执行以下操作
1.为对象在内存中分配空间 --- 创建对象
2.为对象的属性设置初始值 --- 初始化方法(init)
这个初始化方法就是 __init__ 方法,__init__是对象的内置方法
__init__方法是专门用来定义一个类具有哪些属性的方法
在初始化方法内部定义属性
在__init__方法内部使用 self.属性名 = 属性的初始值 就可以定义属性
定义属性之后,再使用类创建的对象,都会拥有该属性
改造初始化方法---初始化同时设置初始值
在开发中,如果希望在窗口对象的同时,就设置对象的属性,可以对__init__方法进行改造
1.把希望设置的属性值,定义成__init__方法的参数
2.在方法内部使用self.属性 = 形参 接收外部传递的参数
3.在创建对象时,使用类名(属性1,属性2...)调用
内置方法和属性
__del__方法
在python中,使用类名()创建对象时,为对象分配完空间之后,自动调用调用__init__方法
当一个对象被从内存中销毁前,会自动调用__del__ 方法
应用场景
__init__ 改造初始化方法,可以让创建对象更加灵活
__del__ 如果希望中对象被销毁前,再做一些事情,可以考虑一下__del__方法,是销毁前执行的最后一个方法
生命周期
一个对象从调用类名()创建,生命周期开始
一个对象的__del__方法一旦被调用,生命周期结束
在对象的生命周期内,可以访问对象属性,或者让对象调用方法
__del__不需要单独调用,对象销毁前会自动调用
可以使用del删除 对象,这时会立即执行__del__方法, 格式:del 对象名()
__str__方法
在python中,使用print输出的对象变量,默认情况下, 会输出这个变量引用的对象是由那一个类创建的对象,以及内存地址
如果中开发中,希望使用print输出对象变量时,能够打印自定义内容,可以使用__str__
注意:__str__方法必须返回一个字符串
什么时候调用对象变量,就什么时候调用__str_ 方法
风月都好看,人间也浪漫.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具