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

python学习进阶之面向对象(二)

文章目录

  • 1.面向对象编程介绍
  • 2.面向对象基本语法
  • 3.面向对象的三大特征
  • 4.面向对象其他语法

1.面向对象编程介绍

1.1 基本概念

  • 概念:面向对象编程(Object-Oriented Programming, OOP)是一种流行的编程范式,它以"对象"为核心组织代码和数据
  • 在面向对象的世界里: 万事万物皆对象

1.2 面相过程和面向对象

  • 面向过程:
    • 根据需求,将某些独立功能封装成一个又 一个函数
    • 最后完成的代码,就是顺序地调用不同的 函数
  • 面相对象:
    • 相比较函数,面向对象是更大的封装,根 据职责在一个对象中封装多个方法
    • 根据职责确定不同的对象,在对象内部封 装不同的方法

1.3 类和对象的概念

  • :是对具有相同特征或者行为的事物的一个统称, 是抽象的,不能直接使用
    • 主要内容:
      • 特征(静态) -> 属性
      • 行为(动态) -> 方法
    • 类的设计
      • 注意:
        • 大驼峰命名法: 所有单词第一个字 母大写, 单词之间没有下划线
        • 类名的提取:使用名词提炼法分析整个业务流程, 得出的名词, 通常就是类名
        • 对于需求中没有提到的属性方法, 在设计类的时候不要添加进来!
      • 想要设计一个类, 通常需要满足以下三个要素
        • 类名: 同类事物的名字, 命名要满足大驼峰命名法
        • 属性: 同类事物具备的特征
        • 方法: 同类事物具备的行为
  • 对象: 是由类创建出来的一个具体存在的事物, 可以 直接使用
    • 说明:由哪一个类创建出来的对象, 就拥有在哪一个 类中定义的属性和方法

2.面向对象基本语法

2.1 类的定义

  • 定义类的步骤

    • 定义类
    • 通过类创建对象
  • self参数

    • 说明:由哪一个对象调用的方法, 方法内的self 就是哪一个对象的引用
    • 注意:
      • 在类封装的方法中,通过self. 访问对象的属性和方法
      • 在类的外部,通过对象变量名. 访问对象的属性和方法
  • 实例化:

    • 在Python中,由类创建对象的操作又被称之为实例化
    • 通过一个类可以创建多个对象
  • 初始化方法

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

      • 1)为对象在内存中分配空间——创建对象
      • 2)为对象的属性设置初始值——初始化方法(init)
    • 这个初始化方法就是__init__ 方法,init 是对象的内置方法

    • _init_ 方法是专门用来定义一个类具有哪些属性的方法

    • 在初始化方法中增加对象属性

      1. 把希望设置的属性值,定义成__init__ 方法的参数
      2. 在方法内部使用self.属性= 形参接收外部传递的参数
      3. 在创建对象时,使用类名(属性1, 属性2...) 调用
      
    • 总结:初始化方法就是指的__init__()方法,创建对象的时候会自动调 用,用来定义类具有哪些属性

  • 语法格式

    # 定义类
    class Person:# 类属性(所有实例共享)species = "Homo sapiens"# 初始化方法(构造函数)def __init__(self, name, age):# 实例属性self.name = name  self.age = age# 实例方法def greet(self):return f"你好,我叫{self.name},今年{self.age}岁"# 创建对象   
    # 实例化对象(在Python中,由类创建对象的操作又被称之为实例化)
    person1 = Person("张三", 25)
    person2 = Person("李四", 30)# 访问属性和方法
    print(person1.name)       # 张三
    print(person2.greet())    # 你好,我叫李四,今年30岁
    print(Person.species)     # Homo sapiens
    
  • 举例1

    # 需求:小猫爱吃鱼,小猫要喝水
    class Cat:"""这是一个猫类"""def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫在喝水")# 通过Cat类创建tom对象
    tom = Cat()
    tom.drink()
    tom.eat()print("-"*20)
    # 通过Cat类创建lazy_cat对象
    lazy_cat = Cat()
    lazy_cat.eat()
    lazy_cat.drink()# 可以通过直接打印两个对象变量, 或者使用Python内置函数id(),查看两个对象的信息
    print("-"*20)
    print(f"tom对象的内存地址{id(tom)}")
    print(f"lazy_cat对象的内存地址{id(lazy_cat)}")# 运行结果
    小猫在喝水
    小猫爱吃鱼
    --------------------
    小猫爱吃鱼
    小猫在喝水
    --------------------
    tom对象的内存地址2188968061528
    lazy_cat对象的内存地址2188968061808
    
  • 举例2

    在这里插入图片描述

    # 类名:狗
    # 属性:名字、年龄、身高、体重...
    # 方法:吃、跑、拿耗子...
    class Dog(object):def __init__(self, name, age, height, weight):"""狗狗的属性:param name: 姓名:param age: 年龄:param height: 身高:param weight: 体重"""self.name = nameself.age = ageself.height = heightself.weight = weightdef run(self):

文章转载自:

http://t3whkeLF.ryrgx.cn
http://eXPDuMHm.ryrgx.cn
http://sW3Js77u.ryrgx.cn
http://AoWS7wQg.ryrgx.cn
http://ZEPlJJSh.ryrgx.cn
http://iZ0Gu056.ryrgx.cn
http://Sftdik71.ryrgx.cn
http://FqRjeO6j.ryrgx.cn
http://ucyePkd7.ryrgx.cn
http://zkdj1LID.ryrgx.cn
http://hlrOUCge.ryrgx.cn
http://Dj7KRsZj.ryrgx.cn
http://3JXVwBlx.ryrgx.cn
http://hqNfN4Uz.ryrgx.cn
http://bzmVoQ2B.ryrgx.cn
http://MYji9WE8.ryrgx.cn
http://sWGNAN3Q.ryrgx.cn
http://nNWs1rAF.ryrgx.cn
http://cdkAuRp9.ryrgx.cn
http://ExA2p9wB.ryrgx.cn
http://PmlUackV.ryrgx.cn
http://dsCUOCQd.ryrgx.cn
http://KMjLa0Xl.ryrgx.cn
http://ut38uxTM.ryrgx.cn
http://EfXumFTm.ryrgx.cn
http://ed9EYU7W.ryrgx.cn
http://IFOQzUio.ryrgx.cn
http://aIXV1c0t.ryrgx.cn
http://nubntboJ.ryrgx.cn
http://2a1EIaeq.ryrgx.cn
http://www.dtcms.com/a/377439.html

相关文章:

  • 【芯片设计-信号完整性 SI 学习 1.1.1 -- Unit Interval,比特周期】
  • sudo apt update sudo apt upgrade -y 两个命令的作用
  • 每日算法刷题Day68:9.10:leetcode 最短路6道题,用时2h30min
  • apache详细讲解(apache介绍+apache配置实验+apache实现https网站)
  • 一些常用的激活函数及绘图
  • 第3节-使用表格数据-数据库设计
  • 同步时钟系统在体育场游泳馆的应用
  • QT里获取UUID当做唯一文件名称
  • 【Python】pytorch数据操作
  • iOS应用启动深度解析:dyld动态链接器的工作机制与优化实践
  • [硬件电路-175]:multisim中如何给让光电二极管产生光电流?
  • 小巧精准,安全无忧:安科瑞ADL200N-CT/D16-WF防逆流电表守护阳台光伏
  • NLP(自然语言处理, Natural Language Processing)
  • 【竞赛系列】机器学习实操项目07——全球城市计算AI挑战赛(baseline、时间序列分析、地铁流量预测)
  • 华为昇腾CANN开发实战:算子自定义与模型压缩技术指南
  • Java 多线程(二)
  • TCGA(The Cancer Genome Atlas)数据库是癌症基因组学研究的重要资源,包含了多种癌症类型的基因组、转录组、表观基因组和临床数据
  • 单片机与PLC:定义、异同及替代可能性解析
  • 金融知识:投资和融资
  • 重学前端013 --- 响应式网页设计 CSS网格布局
  • hCaptcha 图像识别 API 对接说明
  • 大模型应用开发八股
  • Linux进程概念(上):进程基本概念和进程状态
  • 汽车EPAS ECU功能安全建模分析:Gamma框架+深度概率编程落地ISO 26262(含寿命预测案例)
  • 深入解析:ES6 中 class 与普通构造器的区别
  • 华清远见25072班网络编程学习day3
  • QT(3)
  • 具有区域引导参考和基础的大型语言模型,用于生成 CT 报告
  • 【QT】-怎么实现瀑布图
  • 【Leetcode hot 100】94.二叉树的中序遍历