python面向对象学习之类,构造函数,以及self参数

本文通过实例比较了Python中的面向对象编程与函数式编程,在特定场景下,面向对象编程通过封装减少了重复代码,展示了其优势。

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

python中函数式编程和面向对象编程都能解决问题,但有些时候函数式编程会显示很麻烦。

python中类的定义关键字 class  形式如下

class Bar:

    def foo(self,arg):
        print(arg)

里面定义了一个方法foo   类中方法的函数第一个参数必须为self。

通过一个实例进行讲解:

比如我们想打印如下内容

lyf   18   女   黑龙江活动
lyf   18   女   吉林活动
lyf   18   女   辽宁活动

通过函数式编程我们可以这样解决:

def foo(name,age,gender,content):
    print(name,age,gender,content)

#调用:
foo('lyf','18' ,'女' ,' 黑龙江活动')
foo('lyf','18' ,'女' ,' 吉林活动')
foo('lyf','18' ,'女' ,' 辽宁活动')

通过面向对象可以这样解决:

class Bar:

    def foo(self,name,age,gender,content):
    print(name,age,gender,content)

#调用:
obj = Bar()
obj.foo('lyf','18' ,'女' ,' 黑龙江活动')
obj.foo('lyf','18' ,'女' ,' 吉林活动')
obj.foo('lyf','18' ,'女' ,' 辽宁活动')

通过以上两段代码可能会有一个疑问,面向对象编写好像也没有比函数式编程好,反而代码量增加了。我们仔细官场函数需要的前三个参数都是一样的。我们可以把信息封装到构造函数中:

class Bar:

    def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.gender = gender

    def foo(content):
        print(self.name,self.age,self.gender,content)

#调用:
obj = Bar('lyf','18' ,'女')
obj.foo('黑龙江活动')
obj.foo(' 吉林活动')
obj.foo(' 辽宁活动')

通过这种方式我们可以看出比函数式编程的优势,重复的代码减少了。

类中构造函数的形式 __init__(self,args)

那到底self这个参数是个什么?只需要记住这一条:

self参数等于调用函数的实例对象。在上文中也就是self = obj这个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值