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 的相关文章

  • python面向对象

    面向对象中的几点概念 xff1a 类 xff1a 用户定义的对象原型 xff08 prototype xff09 xff0c 该原型定义了一组可描述该类任何对象的属性 xff0c 属性是数据成员 xff08 类变量 和 实例变量 xff09
  • 面向对象(3)

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

    1 面向对象方法四要点 xff08 1 xff09 对象 xff1a 客观世界有各种对象组成 xff0c 任何事物都是对象 xff0c 比如一支笔 xff0c 一张纸 xff0c 复杂的对象可由简单的对象以某种方式组合而成 对象分解取代功能
  • 如何理解面向对象编程(OOP)

    想要理解OOP 首先需要清楚什么是对象 所谓对象就是由一组数据结构和处理它们的方法组成的 划重点 数据 包括对象的特性 状态等的静态信息 方法 也就是行为 包括该对象的对数据的操作 功能等能动信息 把相同行为的对象归纳为类 类是一个抽象的概
  • 01预习-软件缺陷基础 窗体顶端  1单选(1分)  编码阶段产生的错误由()检查出来的。  A集成测试 B有效性测试 C单元测试 D系统测试  2单选(1分)  修复软件缺陷费用最

    01预习 软件缺陷基础 窗体顶端 1单选 1分 编码阶段产生的错误由 检查出来的 A集成测试 B有效性测试 C单元测试 D系统测试 2单选 1分 修复软件缺陷费用最高的是 阶段 A发布 B编写代码 C设计 D编制说明书 3单选 1分 经验表
  • Python 面向对象(一)

    0 OOP Python面向对象 Python面向对象 面向对象编程 基础 公有私有 继承 组合 Mixin 魔法函数 魔法函数概述 构造类魔法函数 运算类魔法函数 1 面向对象概述 ObjectOriented OO OOP思想 接触到任
  • C# 重写WndProc 消息循环

    重写WndProc方法来处理 Windows 消息 处理 Windows 消息 在开发winForm时 常常要处理Windows消息 可以重写WndProc来实现 常见代码如下 using System using System Drawi
  • 趣解面向对象

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

    定义基类 基类通常都应该定义一个虚析构函数 即使该函数不执行任何实际操作也是如此 基类必须将它的两种成员函数区分开来 一种是基类希望其派生类进行覆盖的函数 既虚函数 使用virtual关键字 一种是基类希望派生类直接继承而不要改变的函数 c
  • 对面向对象的理解(转载原因:举例简单明了)

    1 什么是面向对象语言 面向对象语言 Object Oriented Language 是一类以对象作为基本程序结构单位的程序设计语言 指用于描述的设计是以对象为核心 而对象是程序运行时刻的基本成分 面向对象语言很多 如一直高居世界编程语言
  • Java基础-面向对象

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

    class Person def init self name sex age CE self name name self sex sex self age age self CE CE def grassland self 注释 草丛战
  • 原来 Python 也有重载?

    Python作为一门动态语言 其实并不需要重载 但是如果你愿意的话 可以显式的声明重载 先简单介绍下什么是重载 Overload 重载 overloading 是在一个类里面 方法名字相同 而参数不同 返回类型可以相同也可以不同 提出问题
  • Java语言与面向对象的程序设计

    这几天很迷茫 听老师介绍了一款软件 中国大学MOOC 刚好我是软件专业的学生 索性听了北京大学老师的一节关于Java的讲课 果断被震撼到了 他们的讲课给人一种很深刻 深入 的感觉 我今天就把老师讲到的东西记了下来 以便于有兴趣的朋友阅读 J
  • 解一元二次方程——Java

    解一元二次方程 可以使用下面的公式求元二次方程ax x bx c 0的两个根 b b 4ac称作一元二次方程的判别式 如果它是正值 那么一元二次方程就有两个实数根 如果它为0 方程式就只有一个根 如果它是负值 方程式无实数根 编写程序 提示
  • Unity触控——单指、双指、Windows大屏多人触控

    前段时间做了个Windows系统的大屏触控程序 最多同时支持十点触控 并且在各自的小窗口中要分别处理 即每个小窗口中的触点为一个处理组 判断其单点或多点操作 按以往移动端程序的触屏事件Input GetTouch int index 不满足
  • C# 实现一个简单的图书管理系统(无数据库)新手教程1

    源码在vs2005中测试可以运行 源码如下 using System class Card private string title author private int total public Card title author tot
  • 面向对象的单片机编程

    1 在看别人单片机程序时 你也许是奔溃的 因为全局变量满天飞 不知道哪个在哪用了 哪个表示什么 而且编写极其不规范 2 在自己写单片机程序时 也许你也是奔溃的 总感觉重新开启一个项目 之前的写过相似的代码也无法使用 得重新敲 代码重用度不高
  • 一文入门Python面向对象编程(干货满满)

    在开始之前 我一直企图找到一个通俗直观的例子来介绍面向对象 找来找去 发现什么都可以是面向对象 什么又都不是面向对象 后来我发现 人类认识社会的方式更多的就是面向对象的方式 物以类聚 人以群分 这句话好像给我们的面向对象有很好的诠释 会飞的
  • BMS开发之面向对象思想(adbms1818)

    借鉴adbms1818的底层驱动代码 前言 adbms1818的主要用途就是不同种类的寄存器里面存储不同的数据 程序员需要通过特定的协议往寄存器里面写入或者读出数据 1 定义一个结构体 里面存储了adbms1818的所有寄存器的信息 然后我

随机推荐

  • 高翔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 对类的属性和方法增加 访问权限控制