文章目录

  • 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://www.pswp.cn/news/921912.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921912.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921912.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助

加粗样式 最近的工作用到VS2022QT5.9.9/QT5.12.9,在查找相关资料的时候,发现Qt 官方的资料还是很不错的,特记录下来,要记得抽时间学习下。 Add Qt versions https://doc.qt.io/qtvstools/qtvstools-how-to-add-qt-versions.html B…

【系统分析师】第21章-论文:系统分析师论文写作要点(核心总结)

更多内容请见: 备考系统分析师-专栏介绍和目录 文章目录 一、写作注意事项:构建论文的合规性与专业性 1.1 加强学习 1.2 平时积累 1.3 提高打字速度 1.4 以不变应万变 二、试题解答方法:结构化应对策略 2.1 试题类型分析 2.2 三段式答题框架 2.3 时间分配 三、论文写作方法:…

tailwindcss 究竟比 unocss 快多少?

tailwindcss 究竟比 unocss 快多少? 前言 大家好,我是去年一篇测评 《unocss 究竟比 tailwindcss 快多少?》 的作者 icebreaker。 一晃到了 2025 年,tailwindcss4 也正式发布了,现在最新版本是 4.1.13。 新版本不仅…

算法练习——55.跳跃游戏

1.题目描述给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。示例 1&#xff…

Django 项目6:表单与认证系统

目录 1、form 表单 2、session 保存状态 3、Admin 后台 4、Auth 系统 1、form 表单 (1)创建 form.py 文件,并完善 from django import forms# 定义一个表单类 class Register(forms.Form):user forms.CharField(max_length30, label用…

tvm/triton/tensorrt比较

1.tvm的主线感觉更新太慢,文档太落后,在自动驾驶领域不支持Blackwell平台,跨平台其实吹牛的更多。我觉得自动驾驶用不起来。2.性能最快的还是tensorrt/tensorrt_llm这条路,纯cuda路线面临大量cuda算子开发,比如vllm ll…

Transform 和BERT、GPT 模型

目录 Transform的由来 Seq2seq 模型 Transform 的内部结构 语言模型 BERT 介绍 BERT 模型的组成 分词器 位置编码 Softmax 残差结构 BERT 模型总结 Transform的由来 传统的语⾔模型,⽐如RNN(循环神经⽹络),就像⼀个“短…

2025高教社国赛数学建模A题参考论文35页(含代码和模型)

2025国赛数学建模竞赛A题完整参考论文 目录 摘要 1 问题背景与重述 2 问题分析 2.1 问题一分析 2.2 问题二分析 2.3 问题三分析 2.4 问题四分析 2.5 问题五分析 3 符号说明 4 模型假设 5 模型建立与求解 5.1 问题一 烟幕有效遮蔽时长…

【Linux】常用命令汇总

【Linux】常用命令【一】tar命令【1】可用参数【2】常用案例(1)创建归档(打包)(2)查看归档内容:​​(3)解包归档 (提取):​​【二】日志查看命令【1】基础命令…

软考系统架构设计师之软件系统建模

一、软件系统建模 系统建模流程包括如下: 二、人机交互设计 黄金三法则: 1、置于用户控制之下以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式 提供灵活的交互 允许用户交互可以被中断和撤销 当技能级别增加时可以使交互流水化并允许定制交…

Linux系统学习之注意事项及命令基本格式

哈喽,你好啊,我是雷工!你要是翻过历史文章的话,肯定特别疑惑:这神经病搞得这个号到底是啥定位,究竟是分享啥类型的,咋乱七八糟的啥都有。真是个杂货铺啥都有,咋又开始分享Linux系统了…

0基础Java学习过程记录——枚举、注解

一、枚举1.基本介绍(1)枚举对应英文 enumeration,简写为 enum(2)枚举是一组常量的集合(3)可以理解为:枚举属于一种特殊的类,里面只包含一组有限的特定的对象2.实现方式&a…

高效计算的源泉:深入浅出冯诺依曼模型与操作系统的管理艺术 —— 构建稳定、高效的应用基石 【底层逻辑/性能优化】

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨个人…

性能测试-jmeter9-逻辑控制器、定时器压力并发

课程:B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter逻辑控制器、定时器妙用IF控制器**IF 控制器的作用**循环控制器循环控制器的作用ForEach控制器ForEach 控制器的作用…

T:线段树入门(无区间更新)

线段树.线段树介绍.线段树框架.理解线段树.图式整个过程.线段树代码逐层解析.代码汇总.leetcode练习.线段树介绍 线段树(SegmentTree)\;\;\;\;\;\;\;\;线段树(SegmentTree)线段树(SegmentTree) is 用于高效处理区间查询和单点修改的数据结构,和树状数组很像&#xf…

【ISP】Charlite工具实操

实习一周了&#xff0c;参与了客观拍摄和测试&#xff0c;复习一下nv工具 BLACK LEVEL&#xff08;黑电平&#xff09; eg&#xff1a; $ nv_ob 0 in_dir <input directory> out_name <ob file> nv_ob 0 in_dir D:\study\nvraw\ob1 out_name D:\study\nvraw\my_out…

普蓝机器人 AutoTrack-IR-DR200 外设配置全指南

为什么外设配置对机器人研究如此重要&#xff1f;在当今机器人技术飞速发展的时代&#xff0c;高校学生研究团队正成为创新的重要力量。无论是参加机器人竞赛、开展毕业设计&#xff0c;还是进行学术研究&#xff0c;正确配置和使用外设设备都是成功的关键。尤其学生组装一个服…

8、Python性能优化与代码工程化

学习目标&#xff1a;掌握Python程序性能分析和优化的通用方法&#xff0c;建立工程化开发的规范意识&#xff0c;为后续AI项目开发奠定坚实的编程基础在数据科学和AI开发中&#xff0c;代码性能往往决定了项目的可行性。一个处理时间从几小时缩短到几分钟的优化&#xff0c;可…

【算法--链表】117.填充每个节点的下一个右侧节点指针Ⅱ--通俗讲解

通俗算法讲解推荐阅读: 【算法–链表】83.删除排序链表中的重复元素–通俗讲解 【算法–链表】删除排序链表中的重复元素 II–通俗讲解 【算法–链表】86.分割链表–通俗讲解 【算法】92.翻转链表Ⅱ–通俗讲解 【算法–链表】109.有序链表转换二叉搜索树–通俗讲解 【算法–链…

分词器(Tokenizer)总结(89)

分词器(Tokenizer)总结 分词器(Tokenizer) 分词器的词表(vocabulary)长度通常短于模型嵌入层(embedding layer)的长度。 结束标记(EOS token)应仅用于标记文本结尾,不可用于其他用途。 填充标记(PAD token)通常未预先定义,但你仍可能需要用到它: 对于生成式模型…