python类和构造方法_Python类和构造方法

本文介绍了Python中的面向对象编程,包括类的定义、对象的创建以及构造方法的作用。强调了函数与类的区别,指出类可以封装共用信息并简化参数传递。文中通过实例解释了`self`参数的含义,即调用方法的对象本身,并探讨了`__init__`构造方法在对象初始化时的重要性。此外,还讨论了如何在数据库操作中应用面向对象的思想,减少重复参数的传递。
摘要由CSDN通过智能技术生成

原标题:Python类和构造方法

1.面向对象介绍

描述:是函数的一个变种,在Python中,有函数式编程和面向对象编程,java和C#之类只能把函数写到类里,没有函数式编程,所以只有面向对象,所以在Python中有了选择,可能就变得有点麻烦,但是在Python里,函数式编程是可以完成所有的功能的,人都是想把事情变得越来越简单,机械化,而在函数式编程中可以使用的代码量和设计比较多,而可能几行代码面向对象就可以实现

分析:

a、Python: 支持函数式,支持面向对象

b、函数式可以做所有的事,但是是否合适?

c、示例

024dd3d12524cbed35a3e8594dc4b937.png

函数实现

描述:一般情况下,使用以下函数来实现打印,但是存在一个小问题,前三个和后三个的名字、年龄、性别都是一样的,相当于各自传了三次,在文件操作的情况下,首先找到文件路径,打开文件进行操作,最后要关闭它,对于数据库,实际上也是一样的,要连接它首先知道它的服务器地址,账户密码之类的,如果以下的示例比作数据,前面的名字、年龄,性别类似于数据库的账户和密码之类的,后面的内容就是在数据的增删查改等操作,所以在这里的参数传送不太合适

19ad813a5460caa57137414cbced4f1c.png

类的实现:定义类和创建对象

第一个版本:函数修改成类的形式

dbb4e26b1b3dc239256d8a66b9a7f745.png

2.函数与类的对比

a. 定义

函数:

def + 函数名(参数)

面向对象:

class ==> 类,如bar类,bar是类名

def ==> 在类中有def是方法

类中的方法,第一个参数要写self

b. 执行

函数:

函数名(参数)

面向对象:

a.不对直接访问方法,要先创建名称 = 类名(),相当于创建一个中间人,通过它去访问里面的方法,如obj.f()调用

b.这个obj.f()中间人还有一个别名叫作对象,也可以叫作实例

c.实际是类和对象的应用

Summary: 使用class关键字定义一个类,类中有方法,可以没有方法,但是就没有意义,相当于写个模块里面没功能,然后创建一个对象,通过它来调用方法,而且类的方法就是函数,函数有返回值,类也有返回值

4f86facd2ab03c3d9f6476ca1d55a64c.png

3.self是什么?

60ad2b89dba90d53f7a7269eec53a603.png

写函数时可以传参数,这个是形式参数,self单独说就是一个形式参数,创建类class后的操作,在内存中有一个空间,在类的空间中创建一个方法fuc,创建中间人mid1,也就是在类名后加上括号就可以,相当于在内存里再开辟一段内存空间,mid1是根据类来创建的,中间人只能去找类中的方法,所以它与类之间要有一个关联,在中间人内部有指向类,它叫做类对象指针

代码执行过程:从上到下执行,遇到类又遇到方法,把代码放到内存中,再执行中间人 = 类名(),也就是根据类名创建一个中间人,在内存中开辟新的内存空间,中间人是根据类名加了个括号,所以中间人与类之间是有关联的,再通过中间人去执行方法时,中间人就要找到对应的类,再去类中找到方法,再执行,而且可以再创建一个中间人mid2,也是在类后加一个括号,也是有关联,mid2也可以执行类中的方法

a. 字符串例子分析

aa09fec876b7f399fce2fcc52a4ddacf.png

b.self在类中的使用

中间人1 = 类名()代表一块内存,中间人2 = 类名()代表的是另一块内存,中间人1要执行类中的方法时,它是自己找类中的方法,而

中间人2也是找到类中同一个方法,类中有一个函数叫f(自定义),这个函数名有一个self,self是python自身传入的参数,实际情况是,

中间人1去执行类中的方法时,self就是中间人1,中间人2执行类中的方法时,self就是中间人2

c. 测试self: self代指调用方法的对象(中间人)

ee8c6796a016098da7e5ff06f451519c.png

d.self进一步分析

描述:中间人执行类中的方法时,会把自身传过去,在类中的方法fuc中可以得到中间人,中间人中可以存放内容,中间人执行类中的方法时,可以得到中间人,所以它可以取得中间人里面的内容

23623c254bfc88dd0af23555f6c9831b.png

0c982dd90b80f78009e159727b731bc2.png

z1与z封装的值不一样,都是一个中间人,共同引用类中的方法

c36e92bff1bae719214a858b1bb1c66b.png

第二个版本

373b242d32c326a0ac06e8d1e7b1cdda.png

第二个版本延伸到数据库使用

描述:在数据库中的增删改查的操作,在它们的内部self都有三个值可以使用,也就没必要一次性再重新给它传入参数,方法中公用的要知道,在类中的方法里,公用的字段可以封装到中间值中,如果不是公用的要传什么就传什么,把值放入到对象的过程叫封装

9f80933f3e12b202d913384dc5bac13f.png

4.构造方法

特殊作用:

obj = 类名()

实现两个任务:一般情况执行方法时,是把自身内容传入,这里执行方法时,是内部定义好了,自动会执行一个方法,那个方法名固定了,在内部调用时,会把自身也传递过程

a.创建对象

b.通过对象执行类中的一个特殊方法

第三个版本修改

d4098efd1af9bd944217a4675011bc93.png

区别: 两者区别是认证调用的

4bfeddc4d0f3a58f75950fa1a6b4401b.png

init的操作使用

描述:一般在创建对象时,会把一些公用的字段都放入init方法,init方法一般用于初始化,因为创建对象时,有些是需要先创建,当执行obj = 类(),python内部会自动调用init方法来执行,如果init中没写代码,相当于没有写,所以init就是类后面加上括号,python自动执行

fd06af4791e3f842d5ea21c05934d762.png

init的实例

实例1:

eb6f2968665caf6c3bb26e4a768de211.png

实例2:

2a8b1ab7a2882aac91e654dfe1cf6689.png

78d6e40d98419dc021b4f218fbdc2681.png

实例3:

描述:如下人的例子,假设要每个人的血型都是0

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值