Python 面向对象学习(一)

1. 面向对象的概念

面向对象编程——Object Oriented Programming,是我们在编程中解决问题的一个新的方式,一种编程的思想。而在常见的编程中,我们是以面向过程的方式解决的,首先我们了解一下面向对象与面向过程的基本概念。

1.1 面向过程

我们把完成一件工作的各个步骤依次编写代码,每一个步骤都可以封装成一个函数,在使用是只需要依次调用即可。特殊的,一个步骤也可以分成很多小的步骤,使用更小的函数来解决。

例如,把大象装进冰箱需要几步?

  1. 把冰箱门打开
  2. 把大象装进冰箱
  3. 把冰箱们关上

我们可以编写这样的三个函数

def open_fridge_dooor():
    # 打开冰箱门的方法
    print("打开冰箱门")
    pass


def get_an_elephant_into_fridge():
    # 把大象装进冰箱的方法
    print("把大象装进冰箱")
    pass


def close_fridge_door():
    # 关上冰箱门的方法
    print("把冰箱门关上")
    print("(o゜▽゜)o☆[BINGO!] 我把大象关冰箱里了!")
    pass


open_fridge_dooor()
get_an_elephant_into_fridge()
close_fridge_door()

执行结果

打开冰箱门
把大象装进冰箱
把冰箱门关上
(o゜▽゜)o☆[BINGO!] 我把大象关冰箱里了!

这样,在我们需要实现把大象关进冰箱是只需要依次掉用三个函数就可以完成了。所以我们在解决问题前,要提出解决问题的过程,然后按部就班实现就可以了。

1.2 面向对象

在面向对象的编程方式中,我们把问题分解为各个对象,在不同对象的中封装不同的方法,最后让对象调用自身的方法,从而完成目标的工作。

我们仍然以把大象装进冰箱为例,在问题中需要把大象装进海尔冰箱。我们应该如何解决这个问题呢?
在面向对象编程中,要首先进行需求分析,明确需要创建对象的类。在把大象关进冰箱的问题中,我们需要一个冰箱的对象,它有一个名称的属性是海尔冰箱,然后由冰箱执行开门-装大象-关门的操作。所以我们建立一个冰箱类,由类创建冰箱对象。这里你可能还不明白类、对象、属性、方法是什么,不过没有关系,在之后的内容中我们将依次介绍。

class Fridge(object):
    def __init__(self, name):
        self.name = name

    def open_door(self):
        # 打开冰箱门的方法
        print("打开冰箱门")
        pass

    def move_sth_in(self, sth):
        # 冰箱装东西的方法
        print("把 %s 装进 %s" % (sth, self.name))
        pass

    def close_door(self):
        # 关上冰箱门的方法
        print("把冰箱门关上")
        pass


fridge = Fridge("海尔冰箱")
fridge.open_door()
fridge.move_sth_in("大象")
fridge.close_door()

执行结果

打开冰箱门
把 大象 装进 海尔冰箱
把冰箱门关上

在这个问题中我们可以发现,使用面向对象编程时,代码的调用关系十分清晰明确。在复杂的项目开发中,如果以面向过程的编程方法可能会出现代码的互相调用,代码的结构会变得复杂,从而出现各种各样的BUG需要我们解决,而面向对象方法给了我们在面对复杂问题时的通用的解决思路。

1.3 面向过程与面向对象

学习面向对象需要读者已经掌握Python 语法和熟悉面向过程的基础上,再学习一些面向对象的语法,经过一定的训练就可掌握面向对象的编程方法了。

面对一个具体问题时,在选择面向过程还是面向对象的问题上,我们也不必太过纠结,如果你在分析问题后已经形成了使用面向过程的解决方案,那么使用面向过程方法就好了;如果遇到相对复杂的问题没有头绪时,不妨从面向对象的思路中,找到一条解决问题的途径。

猜你喜欢

转载自www.cnblogs.com/geoffry/p/10360442.html