当前位置: 首页 > news >正文

Python(白银时代)——面向对象

基本概念

面向过程

  • 是早期的一个编程概念,类似函数,但是没有返回值

  • 具体做法:

    • 把完成某个需求的所有步骤,从头到尾 逐步实现

    • 将某些功能独立的代码 封装成一个又一个 函数

    • 然后顺序调用不同的函数

  • 特点:

    • 注重 步骤与过程,不注重职责分工

    • 如果需求复杂,代码会变得很复杂

    • 开发复杂项目,没有固定的套路,开发难度大

面向对象

  • 相较于函数,面向对象是更大的封装,根据 职责 在一个对象中封装多个方法

  • 在完成某个需求前,首选确定 职责,根据职责确定不同的对象,在对象内部封装不同的方法

  • 最后让不同的对象调用不同的方法

  • 特点:

    • 注重 对象和职责,不同的对象承担不同的职责

    • 更加适合对应复杂的需求变化,专门应对复杂项目开发,提供固定套路

类和对象

  • 类  对象 是面向对象的两个核心概念

  • 在程序开发中,先有  ,后有 对象

    • 对一群具有相同 特征 或 行为的事物的一个统称,是抽象的,不能直接使用

      • 特征 即 属性

      • 行为 即 方法(函数)

    • 类相当于做汽车的图纸是一个模板,而根据这个 模板 做出来的具体物品就是 对象

    • 三要素

      • 类名 这类事物的名字使用大驼峰命名法(HelloWorld)

      • 属性 指这类事物的特征

      • 方法 指这类事物具备的行为

  • 对象

    • 对象 是根据类创建出来的一个具体存在,可以直接使用

    • 根据类创建出来的对象,具备与类相同的 属性 和 方法

类和对象的关系

  • 类是模板,对象 是根据 类 这个模板创建出来的,先有类,后有对象

  • 类 只有一个,根据这个类创建的 对象 可以有多个

    • 不同的对象之间,属性可能会各有不同

  • 类 中定义了什么样的属性和方法,对象中就是什么样的属性与方法

基础语法

dir内置函数

  • 在 Python 中,对象几乎无所不在,变更、数据、函数都是对象

  • 使用内置函数 dir 传入 标识符/数据,可以查看对象内的所有属性和方法

  • __方法名__ 格式的方法是Python提供的 内置方法/属性

  • 常见方法如下

方法名类型作用
__new__方法创建对象时,会被自动调用
__init__方法对象被初始化时,会被自动调用
__del__方法对象被从内存中销毁时,会被自动调用
__str__方法返回对象的描述信息,print 函数输出使用

示例

# 定义函数,测试内置方法
def demo():passprint(dir(demo))

输出结果

定义简单类

  • 面向对象 是更大的封装,在一个类中封装多个方法,通过这个类创建的对象 可以直接使用这些方法

  • 类中方法的定义,与之前定义函数时,几乎一样,区别在于每一个参数必须是 self, self 表示调用者本身的引用

  • 调用中对象中的方法时,self 不需要传递

  • 可以通过 self 调用对象的其它属性或方法

示例

"""
需求:
定义一个狗类,狗有 吃骨头,睡觉两个方法"""
class Dog:# 第一个参数 必须是 self,表示调用者本身的引用def eat(self):print("狗狗要吃骨头了...")def sleep(self):print("狗狗要睡觉了...")# 定义对象调用方法
dog=Dog()
dog.eat()
dog.sleep()# 定义第二个 狗对象
dog2=Dog()
dog2.eat()
dog2.sleep()# dog 和dog2 是用同一个类 创建出来的,里面的方法和属性是一样的,但是对象的引用是不同的
print(dog)
print(dog2)
 

输出结果

对象的初始化

  • 当使用 类名() 创建对象时,会 自动 执行以下操作

    • 为对象分配内存空间

    • 为对象的属性设置初始值(即调用 __init__ 方法)

  • __init__ 是对象的内置方法,专门用来定义一个类 具有哪些属性的方法

示例

class Dog:def __init__(self,name):print("开始初始化Dog的属性...")self.name=namedef eat(self):print("%s 开始吃骨头了..."%self.name)def sleep(self):print("%s 想要睡觉了..." %self.name)# 定义对象,并为其属性赋值
dog=Dog("小白")
dog.eat()
dog.sleep()dog2=Dog("小黑")
dog2.eat()
dog2.sleep()

输出结果

内置方法

  • __del__ 方法:当一个对象被从内存中销毁时,会自动调用

  • 应用场景

    • __init__ 改造初始化方法,可以让对象更加灵活

    • __del__ 如果希望对象在被销毁前,再做一些事情,可以使用此方法

  • 生命周期

    • 一个对象从调用 类名() 创建,生命周期开始

    • 一个对象的 __del__ 方法一旦被调用,生命周期结束

    • 在对象的生命周期内,可以访问对象属性,或者调用对象方法

  • __str__ 方法: 默认打印 对象变量的引用内存地址值,如果希望使用 print 输出对象变量时,能够打印 自定义的内容,就可以利用 __str__ 方法,该方法必须返回一个字符串

示例

class Dog:def __del__(self):print("小黑去轮回了......")def __str__(self):return "我是小黑的自定义打印内容。。。"dog=Dog()
print(dog)
print("---------------11111111111")

输出结果

程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注!

http://www.lryc.cn/news/41917.html

相关文章:

  • Python流星雨代码
  • Java语言-----类与对象的秘密
  • 大数据处理学习笔记2.1 初识Spark
  • 太强了,英伟达面对ChatGPT还有这一招...
  • 【微服务】—— Nacos注册中心
  • GPT-4是个编程高手,真服了!
  • 基于深度学习的车型识别系统(Python+清新界面+数据集)
  • 【蓝桥杯C++】3月21日刷题集训ABC-附百分代码,一目了然
  • HBase高手之路4-Shell操作
  • 聊聊SQL审计功能
  • Markdown常用语法(字体颜色)
  • I2C模块理解
  • 手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)
  • MyBatis高频面试题
  • Redis基础篇
  • unity的C#学习——静态常量和动态常量的定义与使用
  • 栈----数据结构
  • 【人人都能读标准】11. 原理篇总结:一个程序的完整执行过程
  • sheng的学习笔记-IO多路复用,NIO,BIO,AIO
  • 【Python入门第三十五天】Python丨文件打开
  • jsoup 框架的使用指南
  • web前端开发和后端开发哪个难度大?
  • 认证与认可之间有什么区别和联系?
  • 【Java|golang】1626. 无矛盾的最佳球队---最长子序列,不连续,二维数组排序
  • C++ 八股文(简单面试题)
  • RK3588平台开发系列讲解(显示篇)DP显示调试方法
  • 模拟请求发生跨域问题
  • Qt实践项目:仿Everything软件实现一个QtEverything
  • WEB网站服务(一)
  • Python数据分析script必备知识(一)