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这个参数是个什么?只需要记住这一条: