每篇前言
面向对象编程
面向对象编程的思想主要是针对大型软件设计而来的.面向对象编程使程序的扩展性更强,可读性更好,使的编程可以像搭积木一样简单
面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率
Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等
Python中,一切皆对象.数据类型、函数等都是对象
注:Python支持面向过程、面向对象、函数式编程等多种编程范式
一、面向对象初步
1. 面向对象和面向过程的区别
面向过程思维
面向过程编程更加关注的是“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序.面向过程思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成.面向过程适合简单、不需要协作的事务
面向对象思维
面向对象更加关注的是“软件中对象之间的关系”,是一种“设计者”思维,适合编写大规模的程序.面向对象思想更契合人的思维模式.我们首先思考的是“怎么设计这个事物?”面向对象可以帮助我们从宏观上把握、从整体上分析整个系统.但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理
面向过程和面向对象他们是相辅相成的,面向对象离不开面向过程
面向对象思考方式
遇到复杂问题,先从问题中找名词(面向过程更多的是找动词),然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系
面向对象和面向过程的总结
解决问题的思维方式都是代码组织的方式
解决简单问题可以使用面向过程
解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程
2.对象的进化
3.类的定义
# 一个典型的类的定义
class Student: # 类名一般首字母大写,多个单词采用"驼峰原则"
def __init__(self, name, score): # 构造方法第一个参数必须为 self
self.name = name # 实例属性
self.score = score
def say_score(self): # 实例方法
# print(self.name, '的分数是:', self.score)
print("{0}的分数是: {1}".format(self.name, self.score))
s1 = Student('狗蛋', 80) # s1是实例对象,自动调用 __init__() 方法
s1.say_score()
Student.say_score(s1)
print(s1.__dict__)
print(isinstance(s1, Student))
打印结果:
狗蛋的分数是: 80
狗蛋的分数是: 80
{'name': '狗蛋', 'score': 80}
True