到底是用类的函数,还是普通的函数

python中要实现一些功能,可以采用普通的函数,亦可以定义一个类,在类内定义一个函数.那究竟应该采用哪种方法呢?

普通的函数,传参数只是通过入参来进行,当同一个文件中多个接口要访问同一个变量时,可以通过在文件头部定义全局变量.

 

而类中传入参数可以在初始化(__init__())的时候传入参数,并把参数作为类的成员变量,以便类的成员函数去使用.

def __init__(self, path):
    self.path = path #类中的函数都可以通过self.path来获得path的值了

实际上就是面向过程和面向对象之间的区别:

面向过程代码简单一些,但是不能够继承,多态,封装.

面向对象代码多了些,但是可维护性好.

如果定义的函数用不到那些丰富的功能,大可以用普通函数去实现.

# 小猪佩奇. 使用嘴巴嘟嘟技能攻击 超人
# 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蝙蝠侠
# 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蜘蛛侠
 
# 面向过程: 代码非常的冗余. 尤其是参数
def fight_superman(name, jineng):
    print("%s使用%s攻击超人" % (name, jineng))
 
def fight_batman(name, jineng):
    print("%s使用%s攻击蝙蝠侠" % (name, jineng))
 
def fight_spiderman(name, jineng):
    print("%s使用%s攻击蜘蛛侠" % (name, jineng))
 
 
fight_superman('小猪佩奇', "嘴巴嘟嘟")
fight_batman('小猪佩奇', "嘴巴嘟嘟")
fight_spiderman('小猪佩奇', "嘴巴嘟嘟")
 
 
class Pig:
    def __init__(self, name, jineng):
        self.name = name
        self.jineng = jineng
 
    def fight_superman(self):
        print("%s使用%s攻击超人" % (self.name, self.jineng))
 
    def fight_batman(self):
        print("%s使用%s攻击蝙蝠侠" % (self.name, self.jineng))
 
    def fight_spiderman(self):
        print("%s使用%s攻击蜘蛛侠" % (self.name, self.jineng))
 
 
pg = Pig("小猪佩奇", "嘴巴嘟嘟")
# 不需要向原来一样传递一样的参数了
# 面向对象的程序: 结果相对清晰. 缺点: 代码量比原来大, 上手太难
pg.fight_batman()
pg.fight_spiderman()
pg.fight_superman()

 

参考文章:https://www.cnblogs.com/WANG-/p/10133775.html

转载于:https://www.cnblogs.com/Stephen-Qin/p/10392716.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值