Python基础第12讲 - 面向对象
一 面向对象的简介
-
面向对象(oop)
什么是对象?
对象就是内存中存储指定数据的一块区域
实际上对象就是一个容器,专门用来存储数据
二 对象的结构
id(标识):
id 用来标识对象的唯一性,每个对象都有唯一的id
id 是由解释器生成的,id就是对象的内存地址
type(类型):
类型就决定了对象有哪些功能
通过type()函数来查看对象的类型
value(值):
值指的就是对象中存储的具体数据
可变对象和不可变对象
可变 list dict set 不可变 Number(int float) str Tuple bool
三 面向对象的举例
所谓面向对象简单理解就是语言中所有的操作都是通过对象来进行的
问把大象装冰箱总共分几步?
第一步 打开冰箱门 第二步 装大象 第三部 关门
打开功能 存储功能 关闭功能
面向过程 --> 面向对象
定义冰箱这么一个对象
第一 面向对象是一种思考问题的方式,面向对象它是一种思想
第二 面向对象将实物变的简单化了
寻觅这个对象 1.跑腿 2.支付
孩子吃瓜
1.妈妈穿衣服穿鞋出门
2.妈妈骑电动车
3.妈妈到超市门口挺好电动车
4.妈妈买瓜
5.妈妈结账
6.妈妈骑电车回家
7.到家孩子吃瓜
面向过程将一个功能分解成一个一个小的步骤
但是这种编程方式往往只适用于一个功能,我们要实现别的功能的时候,往往需要编写新的代码,复用性比较低
比较符合人的思维,编写起来比较容易
面向对象 就是让 孩子吃瓜 容易维护 方便复用 ,编写起来比较麻烦
四 类(class)的简介
目前学习的对象都是python内置的对象
类简单理解就是一张图纸,在程序中我们需要根据类来创建对象
a = int(10)
bool
str
list
dict
print(a)
定义一个类
语法: class 类名([父类]):
代码块
class MyClass():
pass
print(MyClass)
结果: <class '__main__.MyClass'>
mc = MyClass() # 用MyClass这个类创建了一个对象mc,mc是MyClass的实例
mc2 = MyClass()
mc3 = MyClass()
mc4 = MyClass()
# isinstance() 用来检查一个对象是否是一个类的实例
result = isinstance(mc2,int)
result1 = isinstance(mc2,MyClass)
print(result) # False
print(result1) # True
五 对象的创建流程
类是什么?
类也是一个对象(类是一个用来创建对象的对象)
类是一个type类型的对象
现在通过MyClass创建的类都是空类
可以像对象中添加变量,对象中的变量我们称之为属性
语法:对象.属性名 = 属性值
mc.name = '葫芦娃'
mc2.name = '钢铁侠'
print(mc2.name) # 钢铁侠
六、类的定义
类和对象都是对现实生活事务或程序内容的抽象
实际上所有的事务就是由两部分组成
1.数据(属性)
2.行为(方法)
# 定义一个人类
class Person:
# 在类的代码中,可以定义变量和函数
# 在类中的变量 将会成为所有实例的公共属性
# 所有实例都可以访问这些变量
# a = 10
# b = 20
name = '葫芦娃'
# 在类中有何可以定义函数 类中的函数我们称之为方法
# 这些方法通过该类的实例都可以访问
# 如果是函数 有几个形参传几个实参
# 如果是方法 默认传递一个参数 所以类中的方法至少要定义一个形参 self
def speak(self):
print('你好我是%s'%self.name)
# 传递的这个参数,就是调用方法的对象本身
# 一般我们都会将这个参数命名为self
# print(a)
# 创建Person的实例
p1 = Person()
p2 = Person()
p1.name = '钢铁侠'
p2.name = '绿巨人'
p1.speak() # 你好我是钢铁侠
p2.speak() # 你好我是绿巨人
# print(p1.name)
# print(p2.name)
# p1.speak()
# print(p2)
七、属性和方法
属性和方法的查找流程
当我们去调用一个属性和方法的时候,解析器会先在当前的对象当中寻找是否有该属性或者方法,
如果有,则返回当前对象的属性值
如果没有,则去当前对象中的类对象去寻找,如果有则返回类对象中的属性值,如果没有则报错
类对象和实例对象都可以保存属性和方法
如果这个属性(方法)是所有类共享的,则应该保存到类对象当中
如果这个属性(方法)是某个实例独有的,则应该保存到实例对象当中