day13-面向对象3

2023-05-16

一、私有权限

        封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理; 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了; 对类的属性和方法增加 访问权限控制。         私有权限:在属性名和方法名 前面 加上两个下划线 __ 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问; 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问; 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。

二、私有属性和私有方法

        1、私有方法

        2、私有属性

         私有方法和私有属性子类通过调用通过实例化方法调用私有属性和方法,不能直接调用

         子类不能继承父类私有属性和方法

        小总结:

        1). 私有属性,可以在类内部通过self调用,但不能通过对象访问

        2). 私有方法,可以在类内部通过self调用,但不能通过对象访问

        3). 对象不能访问私有权限的属性和方法

        4). 子类不能继承父类私有权限的属性和方法

        5). Python中没有像C++中 public 和 private, protected 这些关键字来区别公有属性和私有属性。

         6). Python是以属性命名方式来区分,如果在属性和方法名前面加了2个下划线'__',则表明该属性和方法是私有权限,否则为公有权限。

三、修改私有属性的值

        私有属性不能直接访问,所以无法通过第一种方式修改,一般的通过第二种方式修改私有属性的值:定义一个可以调用的公有方法,在这个公有方法内访问修改。

        现代软件开发中,通常会定义get_xxx()方法和set_xxx()方法来获取和修改私有属性值 get_xxx()方法-->返回私有属性的值 set_xxx()方法-->接收参数,修改私有属性的值 对象不能访问私有权限的属性和方法,可以通过访问公有方法set_money()来修改私有属性的值,可以通过访问公有方法get_money()来获取私有属性的值

四、类属性和实例属性

        在前面的例子中我们接触到的就是实例属性(实例对象属性),顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,可以通过类或者实例对象访问 实例属性只能通过对象来调用,类不能调用

        类属性:

        实例属性:

         通过实例(对象)去修改类属性:

 五、静态方法和类方法

        1、类方法

         2、静态方法

         3、实例方法

         类方法使用@classmethod装饰,第一个参数为类(cls),调用时可以通过类的实例或者类本身来调用。 实例方法定义时第一个参数为类的一个实例(self),调用时必须通过实例调用。 静态方法使用@staticmethod装饰,调用时可以使用类的实例或者类本身来调用

六、__new__方法 

         1). __new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供

         2). __new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例

        3). __init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值

        4). 我们可以将类比作制造商,__new__方法就是前期的原材料购买环节,__init__方法就是在有原材料的基础上,加工,初始化商品环节

七、单例模式

        单例模式:永远用一个对象得实例,避免新建太多实例浪费资源     实质:使用__new__方法新建类对象时先判断是否已经建立过,如果建过就使用已有

 八、课堂作业

创建一个老师类 老师类中有学习的方法

老师类中有私有的挣钱的方法,

老师类中有私有类属性money = 100000,还有一个公有的类属性age=45

创建一个学生类,继承自老师类,并重写了老师类中学习的方法

调用学生类中挣钱的方法 调用老师类中的私有属性

修改老师类中的私有属性为200000

调用老师类的私有方法

修改类属性(分别影响某一个对象,类)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day13-面向对象3 的相关文章

  • 软件工程笔记八__面向对象

    1 面向对象方法四要点 xff08 1 xff09 对象 xff1a 客观世界有各种对象组成 xff0c 任何事物都是对象 xff0c 比如一支笔 xff0c 一张纸 xff0c 复杂的对象可由简单的对象以某种方式组合而成 对象分解取代功能
  • Linux驱动_驱动设计的思想(面向对象、设备树)

    一 Linux驱动 驱动设计的思想 xff08 面向对象 分层 分离 xff09 总则 xff1a Linux驱动 61 驱动框架 43 硬件操作 61 驱动框架 43 单片机 1 面向对象就是用结构体表示某个对象 2 分层 3 分离 事实
  • 笔记(STM32篇)day13——USART串口与PC通信实例

    USART 常用来实现控制器与电脑之间的数据传输 这使得我们调试程序非常方便 xff0c 比如我们可以把一些变量的值 函数的返回值 寄存器标志位等等通过 USART 发送到串口调试助手 xff0c 这样我们可以非常清楚程序的运行状态 xff
  • 如何理解面向对象编程(OOP)

    想要理解OOP 首先需要清楚什么是对象 所谓对象就是由一组数据结构和处理它们的方法组成的 划重点 数据 包括对象的特性 状态等的静态信息 方法 也就是行为 包括该对象的对数据的操作 功能等能动信息 把相同行为的对象归纳为类 类是一个抽象的概
  • 系统架构设计师之用例之间的关系:包含、扩展、泛化

    系统架构设计师之用例之间的关系 包含 扩展 泛化
  • Java基础(面向对象,继承,抽象类,接口,多态)

    文章目录 JAVA基础 面向对象 笔记整理 JAVA基础 面向对象 笔记整理 面向对象概述 1 面向对象的思想来源生活 2 任何的对象从两个方面描述 静态属性 动态属性 3 创建一个类 其实就创建了一个模板 4 创建了一个类就是创建了一个新
  • Linux内核调度框架和CFS调度算法

    进程调度 暂时以2 6 24内核版本讲解 该版本是CFS调度器注入Linux内核之后的第二个版本 在框架和数据结构上与4 x之后没有本质上的区别 但是由于4 x对CFS调度做了很大的优化 代码量暴增10倍之多 故不容易把握算法与框架的本质
  • 【Java基础篇

    个人主页 兜里有颗棉花糖 欢迎 点赞 收藏 留言 加关注 本文由 兜里有颗棉花糖 原创 收录于专栏 JavaSE primary 本专栏旨在分享学习JavaSE的一点学习心得 欢迎大家在评论区讨论 继承允许一个类继承另一个类的属性和方法 并
  • 趣解面向对象

    小白自述 过去就听说 到面向对象的时候即使没有女朋友 都可以new好多个 啥时候我也能想new多少new多少 面向对象听了很多老师的课 感觉好绕啊 这个类套那个类 怎么套的也是一头雾水 怎么才能学好了面向对象嘛 好多人都说面向对象是java
  • Java基础-面向对象

    Java基础 面向对象 由于年前工作太忙 实在没时间整理Java基本知识 但是可能长时间不更新不好看 再说我个人也没有半途而废的习惯 所以决定节前还是更新一篇吧 这也算是Java的基本思想和一些偏进阶的东西 如果思考透彻了 理解清楚了 那么
  • 在JAVA中intValue()、parseInt()、valueOf()的区别

    JAVA API文档对于intValue parseInt valueOf 的介绍 详解见代码 package JAVA API public class Test public static void main String args I
  • 面向对象-- 属性查找顺序以及绑定方法

    面向对象编程思想的本质就是将数据和功能绑定在一起 对象本质是容器 其将数据和功能整合在一起 所以在Python中 一切皆对象 对象 数据与功能的结合体 类 种类 相当于诸多对象共有的特征 数据 功能 类只描述对象公共的特征 不同的特征由对象
  • Java基础知识之笔记总结分享(超详细)

    给大家分享一篇我之前在学习java过程中的关于java基础部分的笔记 比较详细 内容也比较多 如有问题请指出以便修改 谢谢 篇幅较长建议收藏浏览 1 环境变量配置 JAVA HOME jdk路径 Path 要把jdk的bin目录路径 添加到
  • 面向对象之魔法方法

    目录 概念 魔法方法分类 构造与初始化 new new 的使用场景 init del 类的表示 str repr bool 访问控制 比较操作 eq ne lt gt 容器类操作 重要 可调用对象 序列化 getstate setstate
  • 通俗易懂,带你了解应用面向对象(含例子超简单)

    面向对象的一些基本概念 软件工程第六版 下面都是面向对象的精华 好好吸收 完全可以掌握 拿一个圆做例子 有半径 周长 颜色 位置 我们现在有3个不同的圆 每个圆就是一个不同的的对象 但是他们都有相同的数据 半径 周长 和相同的操作 显示自己
  • C# 实现一个简单的图书管理系统(无数据库)新手教程1

    源码在vs2005中测试可以运行 源码如下 using System class Card private string title author private int total public Card title author tot
  • C++ 中的虚函数及虚函数表

    C 中的虚函数及虚函数表 一 虚函数及虚函数表的定义 二 虚函数表指针和虚函数表的创建时机 三 虚函数实现多态的原理 一 虚函数及虚函数表的定义 虚函数 虚函数就是在基类中定义一个未实现的函数名 使用虚函数的核心目的就是通过基类访问派生类定
  • 设计模式-2--工厂模式(Factory Pattern)

    一 什么是工厂模式 工厂模式 Factory Pattern 是一种创建型设计模式 它提供了一种创建对象的接口 但是将对象的实例化过程推迟到子类中 工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象 而无需暴露对象的实例化逻辑 工厂
  • 深入研究C++多态(虚函数和虚继承)

    文章目录 多态的引入 虚函数表 几种常见继承关系中的类内存分布 单继承 多继承 菱形继承 总结 作者 狗子孙 链接 https www jianshu com p 02183498a2c2 来源 简书 简书著作权归作者所有 任何形式的转载都
  • Java学习13:面向对象-多态(Polymorphism)内存分析图解

    1 概述 多态是Java面向对象三大特征之一 多态 Polymorphism 顾名思义 即对象具有多种形态 具体而言 是编译时类型 运行时类型 编译时类型 由声明时的类型决定 一般是父类 运行时类型 由实际对应的对象类型决定 具体是哪个子类

随机推荐

  • 高翔ORB-SLAM2稠密建图编译(添加实时彩色点云地图+保存点云地图)

    目录 前言系统版本 一 准备工作下载源码 二 编译 build sh1 删除一些build文件夹2 创建 Vocabulary 文件夹3 在CMakeLists txt中取消编译器的一些设置4 编译5 运行TUM数据集6 实时查看彩色点云地
  • 使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图)

    目录 前言系统版本 一 准备工作下载源码 二 编译 build sh1 删除一些build文件夹2 创建 Vocabulary 文件夹3 编译1 xff09 错误1 4 解决 段错误 xff08 核心已转储 xff09 改动一改动二 5 v
  • SLAM数据集TUM,KITTI,EuRoC数据集的下载地址与真实轨迹文件的查找

    目录 前言一 TUM数据集1 下载地址2 真实轨迹文件的查找3 轨迹格式 二 KITTI数据集1 下载地址2 真实轨迹文件的查找 三 EuRoC数据集1 下载地址2 真实轨迹文件的查找3 轨迹格式 前言 在SLAM的学习过程中 xff0c
  • 镭神16线激光雷达使用

    目录 一 创建工作空间二 进入src 下载驱动三 编译四 修改IP五 查看激光雷达点云 一 创建工作空间 span class token function mkdir span p leishen ws src 二 进入src 下载驱动
  • 使用D435i相机录制TUM格式的数据集

    目录 前言系统版本 一 使用realsense SDK录制bag包的情况1 录制视频2 提取rgb和depth图片1 2 3 对齐时间戳 二 用realsense ros打开相机录制bag包1 将深度图对齐到RGB2 使用realsense
  • 使用MeshLab软件处理pcd点云文件

    目录 前言1 安装MeshLab软件2 利用pcl库将pcd文件转成ply文件3 利用MeshLab旋转ply点云4 将ply文件转为pcd文件5 将ply文件转为pcd文件 xff08 添加读取配置文件版本 xff09 前言 在使用D43
  • 用C/C++读取配置文件的小例子

    这里提供了一个用C C 43 43 读取配置文件的简单框架 xff0c 具体内容可以依据自己的需要修改 GitHub上面的链接 xff1a https github com YuanpengDuan read config 新建一个文件夹
  • 洛谷P1080 [NOIP2012 提高组] 国王游戏

    此题用到的算法有贪心和高精度计算 高精度 高精度真的太折磨人了 xff0c 我搞了好久好久 xff08 PS xff1a python可跳过这一步 xff0c 它自带高精度 一开始我想用long long 但这个数据长度已经超过long l
  • Python中统一快速更换变量的名称

    首先 xff0c 选中需要更改的变量名称 xff0c 其次按下 Ctrl 43 R xff0c 就会出现如下的界面 其次输入你要替换成的变量名字 例如下方截图 xff0c 我要将num替换为str1 最后 xff0c 点击 Replace
  • Linux Qt程序打包

    前言 当我们在linux系统上开发一些工具时 xff0c 想快速分发给相关人员使用时 xff0c 我们可以把开发的相关依赖进行打包 xff0c 然后分发使用 xff0c 其中打包过程中遇到一些问题 xff0c 在没有安装Qt的机器上运行回报
  • word转pdf保持图片清晰度

    今天写论文的遇到两个问题 1 word插入的图片清晰度不够高 xff0c 放大之后不清晰了 2 word里面清晰度高 xff0c 但是转pdf之后放大不清晰了 问题1解决办法 xff1a word中 gt 插入图片 gt 右键选择图片 按照
  • c++字符串连接函数strcat_s

    格式 int a 100 61 0 int b 100 61 0 strcat s a b 功能 把字符数组2 b 连到字符数组1 a 后面 字符数组1必须足够大 连接前两串以 0 结束
  • Python语音合成探究(二、朗读文本的编码问题)

    语音合成时 xff0c 选取的朗读文本大多是网上收集来的TXT 文件 xff0c 有些文件会因为编码原因打开不了 xff0c 程序运行出错 如同样是 离骚 txt 文档 xff0c 用 with open 39 离骚 txt 39 as f
  • 关于Windows上的Android子系统安装

    Win11早些时候的版本公式里展示的安卓系统 Windows Subsystem for Android 简称WSA xff0c 现在可以在电脑中使用 xff0c 过了一年多的时间才想起还有个这种功能 xff0c 在安装时也是发现一些小细节
  • 大一上学期C++课程设计——学生成绩管理系统(QT项目)

    这里是一个大一的萌新 xff01 仅做学习分享 工程文件在评论区置顶 xff01 xff01 近期整理了一下大一上学期的课程设计报告作为学习总结 xff0c 使用的软件是Qt Creator xff0c 主界面效果如下图 QT具体环境如下图
  • 单片机控制直流电机(风扇)电路详解

    单片机引脚为什么无法直接控制电机或风扇 xff1f 我们在使用单片机去控制 43 5V的直流电机或者散热风扇时 xff0c 可能会有一种疑惑 xff0c 51单片机的引脚电压为 43 5V xff0c 为什么不直接用单片机引脚去驱动电机或者
  • [NOIP2002 普及组] 过河卒

    题目描述 棋盘上 AA 点有一个过河卒 xff0c 需要走到目标 BB 点 卒行走的规则 xff1a 可以向下 或者向右 同时在棋盘上 CC 点有一个对方的马 xff0c 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 因此称之为 马
  • Qt学习笔记(5)

    目录 一 菜单栏 MenuBar 二 工具栏 ToolBar 三 状态栏 StatusBar 四 浮动窗口 DockWidget 五 右键菜单 六 托盘菜单 一 菜单栏 MenuBar 只能有一个 创建的最上方 菜单栏有两种方式可以创建 x
  • ftp 命令访问 ftp服务器

    服务端与客户端 登录到FTP服务器时 xff0c 你可以看到服务端的文件 xff0c 这个时候就要有一个区分 xff0c 一个是服务端 xff0c 一个是客户端 xff0c 你发起连接的这台电脑就叫做客户端 xff0c 要连接的FTP服务器
  • day13-面向对象3

    一 私有权限 封装的意义 xff1a 将属性和方法放到一起做为一个整体 xff0c 然后通过实例化对象来处理 xff1b 隐藏内部实现细节 xff0c 只需要和对象及其属性和方法交互就可以了 xff1b 对类的属性和方法增加 访问权限控制