概述

  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”                                         

   在之前已经接触过了面向过程和函数式的编程,还有那么今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

创建类和对象

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能(把一类事物的相同特征和动作整合到一起就是类)

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数(就是基于类而创建的一个具体的事物(具体存在的))

python基础之面向对象(基础篇)

 

在这里举一个小例子:

# 创建类
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, '立方厘米')
静态属性

相关文章: