zoukankan      html  css  js  c++  java
  • 到底是用类的函数,还是普通的函数

    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://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    一道题串联lambda表达式、链式编程、函数式接口、Stream流式计算
    JUC-8锁问题
    JUC-Java中的生产者消费者问题
    Jenkins配置
    kubernetes的配置
    容器技术之Docker的网站搭建
    CentOS 使用yum安装ELK环境命令详解
    golang学习笔记——context库
    golang学习笔记——sync库
    golang学习笔记——select
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10392716.html
Copyright © 2011-2022 走看看