面向过程
过程类似于函数,但过程只负责执行,但没有返回值;函数可以执行也可以返回结果。
步骤:
- 把完成某一需求的所有步骤从头到尾逐步实现;
- 根据开发需求,将某些功能独立的代码封装成多个函数;
- 最后完成的代码就是调用不同的函数。
特点:
- 注重步骤和过程,不注重职责分工;
- 如果需求很复杂,代码也会很复杂;
- 开发复杂的项目时,没有固定的步骤,开发难度大。
面向对象
面对对象是比面对过程更大的封装。
步骤:
- 明确职责,确定最后需要完成的功能;
- 根据不同的职责分类成不同的对象;
- 给不同的对象分配相应的方法。
特点:
- 注重对象和职责的对应;
- 有固定的步骤,适合面向复杂的项目;
- 需要在面向过程的基础上,再学习一些面向对象的语法。
类和对象
1. 类和对象的定义
- 类是对一群具有相同特征和行为的事物的统称,是抽象的,不能直接使用。类是负责创建对象的。
- 对象是由类创建的一个具体存在,可以直接使用。
在程序开发中,应该先有类,再有对象。
2. 类和对象的关系
类是模板,对象是根据类这个模板创建出来的,所以应该先有类,再有对象(举例,类是飞机图纸,对象是根据图纸制造出来的飞机)。类中定义了什么属性和方法,对象就要有对应的属性和方法,不能多也不能少。
3. 类的设计
类的三要素:
- 类名的选取,满足大驼峰命名法。即:
<1> 每个单词的首字母大写;
<2> 单词与单词之间没有下划线。
类名一般选取名词(名词提炼法) - 属性:类的特征
- 方法:类的行为(动词)
面向对象的基础语法
1. dir内置函数
如何在ipython中验证一个东西是否是对象:
- 在标识符或数据后输入一个
.
,然后按下TAB
键:
name = []
name.(TAB)
>>>name.append name.copy name.insert ...
- 使用内置函数
dir
:
dir(name)
>>>['__new__','__doc__','__del__',...]
提示__方法名__
格式的方法是python提供的内置方法或属性
2. 定义简单的类
在python中命名类:
class 类名:
def 方法1(self, 参考列表):
pass
def 方法2(self, 参考列表):
pass
注意:类中的方法,第一个参数必须是self。
%d
可以以十进制输出数字
%x
可以以十六进制输出数字
注意:相同的类只有一个,但可以用同一个类创建多个不同的对象
# 创建一个类,命名为Cat
class Cat:
def eat(self):
pass
def drink(self):
pass
# 创建一个对象tom,并引用类Cat
tom = Cat()
tom.eat
tom.drink
# 创建一个对象lazy_cat,并引用类Cat
lazy_cat = Cat()
# 创建一个对象lazy_cat2,并引用对象lazy_cat
lazy_cat2 = lazy_cat
# 上面三个对象,tom和lazy_cat是不同的对象,但是lazy_cat和lazy_cat2是相同的对象。
# 可以用print()查看其引用的类Cat的地址。
print("tom")
print("lazy_cat")
print("lazy_cat2")