概述
- 面向过程:根据业务逻辑从上到下写垒代码
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
在之前已经接触过了面向过程和函数式的编程,还有那么今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
创建类和对象
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能(把一类事物的相同特征和动作整合到一起就是类)
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数(就是基于类而创建的一个具体的事物(具体存在的))
在这里举一个小例子:
# 创建类
class Foo:
def Bar(self):
print 'Bar'
def Hello(self, name):
print 'i am %s' %name
# 根据类Foo创建对象obj
obj = Foo()
obj.Bar() #执行Bar方法
obj.Hello('wupeiqi') #执行Hello方法
面向对象:【创建对象】【通过对象执行方法】
函数编程:【执行函数】
应用的场景不同造成的编程方式也不同,总结:函数式的应用场景 --> 各个函数之间是独立且无共用的数据
这里再对面向对象再进行一下细分:
1、面向对象不是所有情况都适用
2、面向对象编程
a 定义类
class Foo:
def 方法1(self,bb):
pass
obj = Foo(bb)
b 根据类创建对象(创建一个Foo类的实例)
可以使用对象去执行类中的方法
3、self,形式参数,代指执行方法的对象。python内部自动传递
4、类+括号 => 自动执行类中的 __init__方法: 创建了一个对象
在__init__ 有一个特殊名字:构造方法
==》 初始化
__del__ 解释器销毁对象时候自动调用,特殊的名: 析构方法
静态属性,静态方法,类方法,组合
静态属性的作用 将函数属性伪装成数据属性(封装逻辑)
用法 在方法(函数属性)上面加 @property
1 class Desk: 2 def __init__(self,name,width,length,heigh): 3 self.name = name 4 self.width = width 5 self.length = length 6 self.heigh = heigh 7 @property # 静态 将函数属性伪装成数据属性 8 def cal_area(self): 9 x = "立方厘米" 10 return self.length*self.width*self.heigh,x 11 12 d1 = Desk("舒克",20,50,10) 13 print(d1.cal_area) 14 15 (10000, '立方厘米')