一. 面向对象和面向过程
1 面向过程:一切以实物的流程为核心, 核心是'过程',机械式的编程思维
优点;负责问题流程化,编写相对简单
缺点:可扩展性差
1 # print('打开冰箱')
2 # print('大象走进去')
3 # print('关闭冰箱')
4
5 # def dakai():
6 # print('打开冰箱')
7 # def daxiang():
8 # print('大象走进冰箱')
9 # def close():
10 # print('关闭冰箱')
11 # dakai()
12 # daxiang()
13 # close()
View Code
2 面向对象:一切以对象为中心,万物皆为对象(object)
优点:可扩展性强
缺点:编程的复杂程度高于面向过程
1 # class Daxiang():
2 # def dakai(self):
3 # print('打开冰箱')
4 #
5 # def daxiang(self):
6 # print('大象走进冰箱')
7 #
8 # def close(self):
9 # print('关闭冰箱')
10 # d = Daxiang()
11 # d.dakai()
12 # d.daxiang()
13 # d.close()
View Code
二 . 如何编写面向对象的程序(重点)
先创建类: 归类. 对某些事物进行总结, 相当于图纸
使用类可以创建对象:
class 类名(object)
def __init__(self,name,age): 构造方法,创建对象的时候自动调用这个方法
self.name = name
self.age = age
def 方法名(self,参数):
方法体(return)
创建对象:
变量(引用,句柄) = 类名(参数)
#访问对象的属性信息
对象.属性
#方法的访问
对象.方法()
对比面向对象和面向过程:
看需求
大型项目更适合用于面向对象
小型脚本程序更适合面向过程
1 # class User():
2 # def __init__(self,username,password):
3 # self.username = username
4 # self.password = password
5 # def shu(self,user,word):
6 # if user == self.username and word == self.password:
7 # return True
8 # else:
9 # return False
10 # u1 = User('abc','123')
11 # print(u1.shu(input('输入用户名:'),input('输入密码:')))
View Code
三. 面向对象的三大特征:封装, 继承,多态
1. 封装
对属性封装
self.xxx = xxx
对方法封装
class C():
#对下面方法进行封装
def fun1(self):
pass
def fun1(self):
pass
2. 继承
子类可以自动拥有父类中除了私有内容外的其他所有内容
1 class fu():
2 def car(self):
3 print('五棱宏光')
4 class zi(fu):
5 pass
6 ret = zi()
7 ret.car()#子类没有方法,继承了父类的五棱宏光
View Code
3. 多态
同一个对象多种形态.
1 # 多态
2 class Aniaml(): #(动物)
3 def dong(self):
4 print('动物都可以动')
5 class Cat(Aniaml):
6 def chi(self):
7 print('猫可以吃鱼')
8 ret = Cat()
9 ret.chi()
10 ret.dong()#继承动物的特性
View Code