IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python_day13 -> 正文阅读

[Python知识库]python_day13

预习

面向对象编程——OOP,是一种以对象为中心的程序设计思想
面向过程编程———POP,是一种以过程为中心的程序设计思想

问题:把大象装进冰箱,需要几步?
小品的答案:三步
第一步:打开冰箱门
第二步:把大象装进去
第三步:关上冰箱门

面向过程编程

上面给出的答案就是面向过程的,分析解决问题的步骤,然后一步步的实现

面向对象编程

是通过分析问题中需要的抽象模型,然后更具需要的功能分别去创建对象,最终由模型对象来完成程序

首先面向对象要解决这个问题,需要先建立出抽象模型,比如:打开冰箱和关闭冰箱,这都术语一个冰箱的功能,大象走进去,这就是大象的功能。到此时抽象出两个抽象模型,冰箱和大象。
冰箱具有打开和关闭的功能,大象具有走路的功能。
分析到这里,就是面向对象的思想,具体完成的话,就是去创建冰箱和大象这两个对象,最终完成这个程序,冰箱对象—开门,大象对象—走进冰箱,冰箱对象——关门。

总结

面向过程

面向过程的核心是过程,过程就是指解决问题的步骤。

优缺点

  • 优点:将负责的问题流程化,进而实现简答化
  • 缺点:扩张性差(更新、维护、迭代)
    总结:在去完成一些简单的程序时,可以使用面向过程去解决,但是如果有复杂的程序或任务,而且需要不断的进行迭代和维护,那么肯定优先选择面向对象的编程思想。

面向对象

面向对象的核心是对象,是一个特征和功能的综合体

优缺点

  • 优点:可扩展性高
  • 缺点:编程复杂度相对面向过程高一些,指的是计算机在执行面向对象的程序时的性能表现

面向对象中的一些名称(术语)

类:类是对象的一个抽象的概念
对象(实例):对象就是由类的创建的实例
类和实例的关系就是 膜具和铸件的关系

  • 类是由对象总结而来的,,总结的这个过程叫做抽象
  • 对象是由类具体实施出来的,这个过程叫实例化
    如果还有一些模糊,请思考:
    水果是一个对象还是一个类?
    汽车是一个对象还是一个类?
    手机是一个对象还是一个类?

OOP—基本实现

如果需要实例一个对象,那么需要先抽象一个类

例如需要创建一个汽车对象
首先需要抽象一个汽车类,汽车类就相当于一个设计图纸一样。
由这个设计图纸去创建(实例)出来的真实汽车就是一个对象。

如何创建一个类,通过class关键字来定义一个类
示例:

# 定义一个汽车的类
class car():
    pass

类中需要声明声明内容?

'''
类名的书写规范,建议使用驼峰命名法
    大驼峰:MyCar AoDi
    小驼峰:myCar aoDi

一个类有特征和功能两个概念组成:
    特征就是一个描述: 颜色:黑色,品牌:奥迪,排量:2.4
    功能就是一个能力:拉货,兜风

    特征在编程中就是一个变量,在类中称为 属性
    功能在编程中就是一个函数,在类中称为 方法

类中属性一般定义在前面,方法定义在后面
'''

# 定义一个汽车的类
class Car():
    # 属性 ==> 特征 ==> 变量
    color = '白色'
    brand = '奥迪'
    pailiang = 2.4

    # 方法 ==> 功能 ==> 函数
    def lahuo(self):
        print('奥迪能拉货')

    def doufeng(self):
        print('奥迪能兜风')

    def pianmeimei(self):
        print('开奥迪能骗妹妹')


# 如何去使用这个类?
# 通过类实例一个对象
aodiobj = Car()
# print(aodiobj,type(aodiobj))
# <__main__.Car object at 0x0000019516C82FD0> <class '__main__.Car'>

aodiobj.lahuo()

print(aodiobj.brand)

对象成员的操作



class Car():
    # 属性 ==> 特征 ==> 变量
    color = '白色'
    brand = '奥迪'
    pailiang = 2.4

    # 方法 ==> 功能 ==> 函数
    def lahuo(self):
        print('奥迪能拉货')

    def doufeng(self):
        print('奥迪能兜风')

    def pianmeimei(self):
        print('开奥迪能骗妹妹')


a = Car()
b = Car()
# print(a)
# print(b)
''''
一个类可以实例化多个对象
以上的a和变量都是对象,也都是通过car这个类实例化出来的对象,
但是a和b是两个对象,相同之处就是由同一个类实例化出来
<__main__.Car object at 0x000001AE5E3D2FD0>
<__main__.Car object at 0x000001AE5E3D2FA0>
'''

# 对象成员的操作
# 1.在类的外部,使用对象操作成员
# 访问成员的属性:先访问对象自己的color属性,如果没有没有,就去访问这个对象的类的属性
# res = a.color  #通过对象访问类中的属性

# 修改对象的属性值:实际上等于给这个对象创建了一个a对象自己的calor属性
a.color = '黑色'  #修改对象的属性

# 添加对象的属性: 给当前a对象创建了自己独有的属性
a.name = 'W11111'

# 此时b对象的颜色是声明?
print(b.color)

# 删除属性,只删除这个对象自己的属性,包括对象添加的和修改的
# res = a.lahuo()     #荣光对象访问类的方法

# print(a.color)
# print(a.name)

del a.brand
del a.name

'''
#思考一个问题: brand属性不能删除, 但是name属性可以删除,为什么? 

删除一个对象的属性时,只能删除当前这个对象自己的属性才可以,
上面例子中的brand属性并不是a对象自己的属性,而是属性Car这个类。因此不能删除
而name这个属性,是单独给a对象添加的属性,因为可以删除
'''

# 2.在类的外部,操作对象的方法
# 访问对象的方法:实际上如果这个对象如果自己独立的方法, 那么会访问这个对象的类的方法

# 修改对象的方法:给这个对象的方法重新定义
def func():
    print('这是一个新的方法')
a.lahuo = func # 把一个函数赋值给成员
# a.lahuo()  #去调用这个方法

# 添加新的方法:给这个对象自己新创建的方法
a.fun2 =func
# a.fun2

# 删除方法:可以删除当前这个对象自己的方法
del a.fun2 #可以删
del a.lahuo #可以删
del a.doufeng #不可以删


a.fun2

'''
总结:
    一个类定义类成员属性和成员方法,那么通过这个类实例化的对象,也具备这些方法和属性吗?
实际上,创建对象的时候,并不会把类中的属性和方法复制一份给对象,而是在对象中引用父类的方法
因此在访问对象的属性时,会先去找对象自己的属性,如果没有就去找这个类的属性和方法
类的方法.

一个对象由类创建以后,是一个独立的对象,会引用父类中的属性和方法
    如果在对象创建后,给对象的属性或方法,进行修改或添加,那么此时等于给这个对象创建了一个自己的属性和方法
    所以在删除时,只能删除对象被修改或添加的成员



'''
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:26:58  更:2022-02-26 11:28:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:41:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码