第13讲 python面向对象

1、面向对象的简介

什么是对象?
面向对象(oop)
对象就是内存中存储指定数据的一块区域。
实际上对象就是一个容器,专门用来存储数据。

2、对象的结构

id
id用来标识对象的唯一性,每个对象都有唯一的id
id是由解释器生成的,id就是对象的内存地址
type(类型)
类型决定了对象有哪些功能
通过type()函数可以查看数据类型
value(值)
就是对象中存储的具体的数据
可变对象 和 不可变对象
可变:list列表、dict字典、set集合
不可变:Number(int float str bool Tuple)

3、面向对象的举例

所谓的面向对象简单理解就是语言中所有的操作都是通过对象来进行的
打开功能 存储功能 关闭功能
面向过程 --> 面向对象
定义冰箱这么一个对象
第一、面向对象是一种思考问题的方式,面向对象是一种思想
第二、面向对象使事物简单化了

面向过程是将一个功能分解成一个一个小的步骤
但是这种编程方式往往只适用于一个功能,我们要实现别的功能的时候,往往需要编写新的代码,复用性比较低
面向过程比较符合人的思维,编写起来比较容易

面向对象 就是让孩子吃瓜 容易维护 方便复用,编写起来比较麻烦

4、类(class)的简介

目前学习的对象,都是python内置的对象
类简单理解就是一张图纸,在程序中我们需要根据类来创建对象

自定义类要以大写字母开头
语法:class 类名(父类):
代码块
class MyClass():
pass
#print(MyClass)
mc = MyClass()
mc2 = MyClass()
mc3 = MyClass()
用MyClass类创建了一个对象mc,mc是MyClass的实例
isinstance() 用来检查一个对象是不是一个类的实例
result = isinstance(mc,MyClass)
返回:True

5、对象的创建流程

类是什么?
类也是一个对象(类是一个用来创建对象的对象)
类是一个type类型的对象
print(id(MyClass),type(MyClass))
2291210248536 <class ‘type’>

mc = MyClass()
创建了一个变量为mc的对象,在内存中重新开辟一个区域将对象id重新赋值

现在通过MyClass创建的类都是空类
可以向对象中添加变量,对象中的变量我们称之为属性
语法:对象.属性名 = 属性值
mc.name = ‘葫芦娃’
mc2.name = ‘钢铁侠’
在这里插入图片描述属性和方法的查找流程
当我们去调用一个属性和方法的时候,解释器会先在当前的对象当中寻找是否有该属性的或者方法,如果有,则返回当前对象的属性值
如果没有,则去当前对象的类中查找,如果有则返回类中的属性,如果没有则报错

6、类的定义

类和对象都是对现实生活中事物或程序内容的抽象
实际上,所有事物都是由两部分组成的
1)数据(属性)
2)行为(方法)

尝试定义一个person类
class Person:
#在类的代码块中,可以定义变量和函数
#在类中我们定义的变量 将会成为所有实例的公共属性
#所有的实例都可以访问这些变量
#a = 10
#b = 20
name = ‘葫芦娃’
#在类中也可以定义函数 类中的函数我们称之为方法
#这些方法也可以通过实例访问
#如果是函数 有几个形参你就传几个实参
#如果是方法 默认传递一个参数,所有类中的方法至少要定义一个形参
#在类中方法不能访问中的属性
def speak(self):
#第一个参数就是调用方法的本身
#如果是p1调用,则第一个参数就是p1对象
#如果是p2调用,则第一个参数就是p2对象
#一般我们都会将这个参数命名为self
print(‘你好我是%s’%self.name)
print(self)
#传递的这个参数,就是调用方法的对象本身
#一般我们都会将这个参数命名为self

#创建Person的实例
p1 = Person()
p2 = Person()
p1.name = ‘钢铁侠’
p2.name = ‘绿巨人’
p1.speak()
p2.speak()
print(‘p1’,p1)
print(‘p2’,p2)
返回值:
你好我是钢铁侠
<main.Person object at 0x000001C7BD17CD30>
你好我是绿巨人
<main.Person object at 0x000001C7BD17CFD0>
p1 <main.Person object at 0x000001C7BD17CD30>
p2 <main.Person object at 0x000001C7BD17CFD0>
在这里插入图片描述

7、属性和方法

属性和方法的查找流程
当我们去调用一个属性和方法的时候,解释器会先在当前的对象当中寻找是否有该属性或者方法,如果有,则返回当前对象的属性值
如果没有,则去当前对象的类中查找,如果有则返回类中的属性,如果没有则报错

类对象和实例对象都可以保存属性和方法
如果这个属性(方法)是所有类共享的,则应该保存到类对象当中
如果这个属性(方法)是某个实例独有的,则应该保存到实例对象当中

传递的这个参数,就是调用方法的对象本身
一般我们都会将这个参数命名为self

发布了31 篇原创文章 · 获赞 0 · 访问量 356

猜你喜欢

转载自blog.csdn.net/weixin_38027481/article/details/102706681
今日推荐