到底是用类的函数,还是普通的函数
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