python之面向对象

本文对比了面向对象和面向过程的编程方式,强调了面向对象的职责分工和封装特性。面向对象的两个核心是类和对象,类是具有相同特征和行为的事物的统称,而对象是类的具体实例。文章还介绍了类的设计、初始化方法、内置方法、私有属性和方法,以及新式类和旧式类的区别。面向对象编程更适合处理复杂需求,通过类和对象的组织可以更好地管理代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、面向对象和面向过程的对比

1、面向对象的基本概念(oop:object oriented programming)

面向对象的程序设计核心是对象
我们之前学习的编程方式就是面向过程的
面向过程和面向对象,是两种不同的编程方式
对比面向过程的特点,可以更好的了解什么是面向对象

面向对象:--谁来做?
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法
1)在完成某一个需求前,首先确定职责--要做的事(方法)
2)根据职责确定不同的对象,在对象内部封装不同的方法(多个)
3)最后完成代码,就是顺序的让不同的对象调用不同的方法
特点:
1)注重对象和职责,不同的对象承担不同的职责
2)更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供的固定套路
3)需要在面向过程的基础上,再学习一些面向对象的语法

过程和函数(都是对一段功能的代码进行封装)
过程:是早期的一个编程概念
    过程类似于函数,只能执行,但是没有返回值
函数:不仅能执行,还可以返回结果(return)

2、面向过程:---侧重于怎么做?

面向过程的程序设计的核心是过程
1)把完成某一个需求的 所有步骤 从头到尾 逐步实现
2)根据开发要求,将某些功能独立的代码封装成一个又一个函数
3)最后完成的代码,就是顺序的调用不同的函数
特点:
1)注重步骤与过程,不注重职责分工
2)如果需求复杂,代码会变得很复杂
3)开发复杂项目,没有固定的套路,开发难度很大

二、面向对象的两个核心:类和对象

1、类和对象的概念

类:是对一群具有相同特征或行为的事物的一个统称,不能直接使用(比如:飞机制造图纸不能飞上天)
特征:属性
行为:方法
对象:由类创建出来的一个具体的存在,可以直接使用(用图纸制造出来的飞机可以飞上天)

在程序开发中:应该先有类 再有对象

2、类的设计

1)类名:这类事物的名字,满足大驼峰命名法
    大驼峰命名法
        每一个单词的首字母大写
        单词与单词只见没有下划线
2)属性:这个类创建出的对象有什么样的特征
3)方法:这个类创建出的对象有什么样的行为

注:当一个类定义完成后,要使用这个类来定义对象

 

3、面向对象的基本语法:

定义一个只包含方法的类
class 类名:
    def 方法1(self,参数列表):
        pass
    def 方法2(self,参数列表):
        pass
方法的定义格式和之前学的函数几乎一样
区别在于第一个参数必须是self

例:

 

在面向对象开发中,引用的概念是同样适用的
tom = Cat():在等号右侧我们使用cat类创建了一个猫对象,在等号左侧使用tom这个变量接收了这个猫对象
python解释器在执行到此句代码的时候,在内存中为这个猫对象分配了一个内存空间,然后再让tom这个变量记录了猫对象在内存中的地址
在python中使用类创建对象之后,tom变量中仍然记录的是对象在内存中的地址,即tom变量引用了新建的猫对象
 

 

self:哪一个对象调用的方法,self就是哪一个对象的引用

在类封装的方法内部,self就表示当前调用方法的对象自己
调用方法时,程序员不需要传递self参数(但是定义的时候,第一个参数必须是self)
在方法内部:可以通过self.访问对象的属性
在方法内部:可以通过self.调用其他的对象方法

 

 

三、初始化方法

 

初始化方法:__init__ 是python对象的内置方法
__init__方法是专门用来定义一个类具有哪些属性和方法的

我们现在已经知道了使用 类名() 就可以创建一个对象
当使用类名()创建对象时,python的解释器会自动执行以下操作:
    1.为对象在内存中分配空间--创建对象
    2.调用初始化方法为对象的属性设置初始值--初始化方法(__init__)
这个初始化方法就是__init__方法,__init__是对象的内置方法
__init__方法是专门用来定义一个类具有哪些属性的方法

 

 

四、内置方法

1、__del__内置方法

在python中
    当一个对象被从内存中销毁前(把这个对象从内存中删除掉),会自动调用__del__方法
应用场景
__del__如果希望在对象被销毁前,再做一些事情,可以考虑一下__del__方法

del关键字,可以从内存中删除一个对象,del关键字自己调用了__del__方法

 

2、__str__内置方法

__str__方法:返回对象的描述信息 print 对象

_str__方法:
在python中,使用python输出对象变量,默认情况下,会输出这个变量引用的对象是由哪>一个类创建的对象,以及在内存中的地址(十六进制表示)
如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了

 

 

3、生命周期定义
一个对象从调用类名()创建,声明周期开始
一个对象的__del__方法一旦被调用,生命周期就结束
在对象的生命周期内,可以访问对象的属性,调用对象的方法

 

五、私有属性和私有方法

应用场景
    在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到
    私有属性 就是 对象 不希望公开的 属性
    私有方法 就是 对象 不希望公开的 方法

 

六、继承中的私有属性和私有方法

类的私有属性和私有方法
1.子类对象不能在自己的方法内部,直接访问父类的私有属性和私有方法
2.子类对象可以通过父类的公有方法间接访问到私有属性或私有方法
私有属性,私有方法是对象的隐私,不对外公开,外界以及子类都不能直接访问
私有属性,私有方法常用做一些内部的事情

 

 

七、新式类和旧式类

新式类和旧式(经典)类:
object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看
新式类:以object为基类的类,推荐使用
经典类:不以object为基类的类,不推荐使用
在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类--python3.x中定义的类都是新式类
在python2.x中定义类时,如果没有指定父类,则不会以object作为基类
####推荐使用新式类#############

新式类和旧式类在多继承时---会影响到方法的搜索顺序

为保证编写的代码能够同时在python2.x和python3.x运行
今后在定义类时,如果没有父类,建议统一继承自object

定义新式类:

定义旧式类:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值