Python面向对象编程(1)类和实例

面向过程和面向对象编程

面向过程(Procedure Oriented Programming,POP)面向对象编程(Object Oriented Programming,OOP)是两种主要的程序设计思想。这里简单通俗地讲一下两者的区别:

编程的目的:为了去解决一个问题,或者处理一件事情,比如编写一个程序自动处理学生的信息,或者编写一个程序可以自动做北京烤鸭。

面向过程编程:按顺序编写一系列程序集合,然后执行,得到想要的结果。比如处理学生信息时,编写一条代码获取学生性别信息,然后再获取成绩信息,最后打印出该学生的姓名及成绩,对于每一个学生,把前面的代码执行一遍就可以打印出相应的信息。对于做北京烤鸭也是类似,第一步洗鸭子,接着烤鸭子,最后

切了吃掉,吃完了还不饱 ,那就再执行一次,再吃一只。按照我们写好的命令集合顺序执行,之后得到想要的结果,这就是面向过程的编程,其注重的是编写整个处理的流程。当然为了简化程序设计,面向过程运用函数把整个过程切分为多个子函数降低系统的复杂度,但它依然是面向过程编程。

面向对象编程:面向对象的编程把计算机程序视为一组对象的集合。比如,处理学生信息时,面向对象的编程并不是想着怎么编写程序去处理每个学生的信息,而是把所有这些学生当作一个类(Class),同时把处理类的程序也当作类的一部分,即所有的学生构成一个,类有自己的属性和方法,比如姓名和成绩都是属性,而打印成绩就是方法,而每一个具体的学生只不过是类的一个

实例/对象。这样不仅可以使代码更简洁,也很容易修改属性和方法。

举个例子说明具体的区别:

  • 面向过程

std1 = { 'name': 'Michael', 'score': 98 }

std2 = { 'name': 'Bob', 'score': 81 }

处理学生信息可以通过函数实现,比如打印学生的成绩:

Python面向对象编程(1)类和实例

面向过程

print_score(std1)

print_score(std2)

  • 面向对象
Python面向对象编程(1)类和实例

面向对象

bart = Student('Bart Simpson', 59)

lisa = Student('Lisa Simpson', 87)

bart.print_score()

lisa.print_score()

类和实例

面向对象最重要的概念就是类(Class)实例(Instance),必须牢记类是抽象的模板,比如Student类,是一个统称,泛指所有的学生,而实例是根据类创建出来的一个具体的“对象”,比如张三、李四,每个对象都拥有相同的方法,但各自的数据/属性可能不同。

以Student类为例,在Python中,定义类是通过class关键字:

class Student(object):

pass

class 后面紧接着是类名,即 Student,类名通常是大写开头的单词,通常采用大驼峰命名法,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念后面再讲,通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。

定义好了 Student 类,就可以根据 Student 类创建出 Student 的实例,创建实例是通过类名+()实现的:

>>> bart = Student()

>>> bart

<__main__.student object="" at=""/>

>>> Student

<class>

可以看到,变量 bart 指向的就是一个 Student 的实例,后面的 0x10a67a590 是内存地址,每个object的地址都不一样,而Student本身则是一个类。


分享到:


相關文章: