面向对象的三大特性:继承、多态、封装--封装

2023-11-15

一、封装
1、广义的封装:实例化一个对象,给对象空间封装一些属性

class A:
	def __init(self,name):
		selef.name = name#对象封装属性

2、狭义的封装:私有制。 私有成员:私有静态字段、私有动态方法、私有对象

私有静态字段(见下方代码):
1、实例化对象不能访问私有静态字段
2、类名不能访问私有静态字段
结论:对于私有静态字段,只能在本类中内部访问,派生类不可访问

#类外访问私有静态字段
class A:
	name ="张三"#对象属性,非私有
	__age = 10#私有静态字段
	def func(self):
		print("任意输出")
a = A()
print(a.name)#类外访问:对象访问非静态字段,可正常输出“张三”
print(A.name)#类外访问:类访问非静态字段,可正常输出“张三”
print(a.__age)#类外访问:对象访问私有静态字段,报错  type object 'A' has no attribute '__age'
print(A.__age)#类外访问:类访问私有静态字段,报错   type object 'A' has no attribute '__age'
#类内访问私有静态字段
class A:
	name ="张三"#对象属性,非私有
	__age = 10#私有静态字段
	def func(self):
		print(self.__age)#本类内访问私有静态变量
		print(A.__age)	#本类内访问私有静态变量
		print("任意输出")
a = A()
a.func()

#结果
#19
# 19
# 随便输出
#派生类不可访问私有静态字段
class A:
	name ="张三"#对象属性,非私有
	__age = 10#私有静态字段
	def func(self):
		print(self.__age)#本类内访问私有静态变量
		print(A.__age)	#本类内访问私有静态变量
		print("任意输出")

class B(A):
	def func1(self):
		print(self.__age)
		print(B.__age)

b = B()
b.func1()
#结果
#'B' object has no attribute '_B__age'

私有方法(见下方代码):
1、类外不能访问私有方法
2、类的内部可以访问
结论:对于私有方法,只能在本类中内部访问,派生类不可访问

class A:
    name ="张三"
    __age = 19
    def __func(self):#基类中定义一个私有方法
        print("私有方法")
    def f1(self):
        self.__func()#类内访问私有方法

class B(A):
    def func1(self):
        self.__func()

b = B()
a = A()
a.__func()#类外不可访问私有方法   'A' object has no attribute '__func'
a.f1()#输出“私有方法”--本类内可以访问私有方法
b.func1()#派生类不可访问基类的私有方法   'B' object has no attribute '_B__func'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面向对象的三大特性:继承、多态、封装--封装 的相关文章

  • Python前台搜索-之百度网站搜索

    简述 selenium是谷歌公司的一个项目 这句代码的含义 从谷歌公司的一个项目导入 import 浏览器驱动webdriver 浏览器驱动是用代码来操作浏览器的 简述 调用webdriver Chrome 打开浏览器 简述 通过get方法
  • 多行文字 溢出隐藏 三个点 兼容 IE8+ 及常用浏览器

    常用浏览器css简单实现 text overflow ellipsis overflow hidden display webkit box webkit box orient vertical webkit line clamp 3 IE
  • Mac 使用rz sz 命令

    1 首先安装brew与lrzsz 参考 https blog csdn net weixin 35757704 article details 108880008 然后在控制台 brew install lrzsz 2 安装iterm2 自
  • SQL注入种类

    SQL注入攻击的种类 知彼知己 方可取胜 首先要清楚SQL注入攻击有哪些种类 工具 原料 云盾 方法 步骤 1 1 没有正确过滤转义字符 在用户的输入没有为转义字符过滤时 就会发生这种形式的注入式攻击 它会被传递给一个SQL语句 这样就会导
  • Java跳转语句(break,continue,return)

  • const char*和char *const

    1 const char const在指针前 修饰常量 指向常量的指针 指针指向可以改 指针指向的值不可以改 char ch 5 list const char pStr ch pStr w error pStr hi 提示 虽然不能用pS
  • 步进电机基础(5.1)-步进电机的驱动与控制-恒压驱动、恒流驱动

    步进电机基础 5 1 步进电机的驱动与控制 恒压驱动 前言 基本信息 前言说明 步进电机的驱动与控制 5 1 恒电压驱动 1 使用外加电阻的驱动 2 无外加电阻的驱动 3 电压驱动 5 2 恒电流驱动 前言 基本信息 名称 描述说明 教材名
  • 图像质量评估——论文精读系列

    Madhusudana P C Birkbeck N Wang Y et al Image quality assessment using contrastive learning J IEEE Transactions on Image
  • Java线程:线程状态的转换

    本文转载至 http lavasoft blog 51cto com 62575 99153 一 线程状态类型 1 新建状态 New 新创建了一个线程对象 2 就绪状态 Runnable 线程对象创建后 其他线程调用了该对象的start 方
  • Java等调用python深度学习训练的模型(待完成)

    1 参考博客园 java web应用调用python深度学习训练的模型 2 参考CSDN Java调用Python的训练模型 3 参考博客园 使用java调用python训练出的pmml模型 4 参考简书 java调用python方法 5
  • sum 加 Group By 的使用

    1 A 表 有server id 为1的两条数据 2 B表有server id 为1的数据也有两条 原本Sql是这样 乍一看没啥问题 但是group by 没生效 SELECT a server id sum b score as scor
  • AXI总线之DDR控制器的实现

    由于FPGA的内部RAM资源实在有限 同时又不得不面临大数据量缓存的问题 因此 将DDR进行共享成了最为直接有效的解决方案 设计目标 PL端有多个需要大量数据缓存的通道 让每个通道都将DDR作为外部缓存 FIFO 注意 总的突发在1Gbps
  • 8_请求体-字段

    8 请求体 字段 与使用 Query Path 和 Body 在路径操作函数中声明额外的校验和元数据的方式相同 你可以使用 Pydantic 的 Field 在 Pydantic 模型内部为属性字段声明校验和元数据 1 导入Field fr
  • sql server数据库只有mdf文件,没有ldf,如何加载

    使用sql命令加载 USE master GO CREATE DATABASE northwind ON FILENAME N D db NWind mdf 修改这里的路径 FOR ATTACH REBUILD LOG GO
  • Mysql查询数据库容量大小

    记录一下 好东西 防止忘了 select table schema as 数据库 table name as 表名 table rows as 记录数 truncate data length 1024 1024 2 as 数据容量 MB
  • 常见的几种手机传感器

    传感器Sensor就是手机里那些可以被测量并且能按照一定的规律转换成可用输出信号的器件或装置 一般这类传感器都是由敏感元件以及转换元件组成 手机上的那些能够通过芯片来感应的元器件 如反应距离值 光线值 温度值 亮度值和压力值等 那手机常见的
  • 2-2. 然后是几点(15)

    有时候人们用四位数字表示一个时间 比如1106表示11点零6分 现在 你的程序要根据起始时间和流逝的时间计算出终止时间 读入两个数字 第一个数字以这样的四位数字表示当前时间 第二个数字表示分钟数 计算当前时间经过那么多分钟后是几点 结果也表
  • java中异常总结-值得一看

    本文要点 1 Throwable把错误进一步划分为 java lang Exception 和 java lang Error java lang Error 用来处理系统错误 2 所有继承自RuntimeException的异常都被称为非
  • vue3+pinia的使用,刷新后不丢数据

    前言 好用的状态管理器 vue3中出来的pinia 相比较vuex来说 更加轻便 使用也更方便 官方文档 点我 github地址 点我 pinia与vuex相比较优点 pinia 是轻量级状态管理工具 大小只有1KB pinia 模块化设计
  • 深入理解Spring的事务传播行为

    前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为 事务传播行为是Spring框架独有的事务增强特性 它不属于的事务实际提供方数据库行为 这是Spring为我们提供的强大的工具箱 使用事务传播行

随机推荐

  • JAVA练习(3)

    模拟双色球生成案例 需求 体彩中有一项是双色球 要求在1 33号共33个红色球里选出6个 1 16号共16个蓝色球中选出一个作为中奖号码 请实现这个需求 分析 1 定义两个方法来输出红色球和蓝色球 2 需要从33个红色球中选出6个 所以不能
  • element ui 弹出组件的遮罩层以及多层遮罩解决办法

    做项目中遇到几次弹出框遮罩层的问题 有嵌套的 弹出框 还有单页面中tabs标签页的弹出框 今天就说一下tabs中的弹出框遮罩层的问题 这个页面有五个tabs页签 每一个都有弹出框组件 也就是说每一个都有遮罩层 很有趣的问题 我在第五个tab
  • 神经网络学习小记录71——Tensorflow2 使用Google Colab进行深度学习

    神经网络学习小记录71 Tensorflow2 使用Google Colab进行深度学习 注意事项 学习前言 什么是Google Colab Colab官网 利用Colab进行训练 一 数据集与预训练权重的上传 1 数据集的上传 2 预训练
  • 相机的运动

    using UnityEngine using System Collections using System Collections Generic using DG Tweening using UnityEngine EventSys
  • 数字基带信号(单极性归零、单极性不归零、双极性归零和双极性不归零)波形仿真设计(matlab)

    一 实验目的 了解数字基带信号 单极性归零 单极性不归零 双极性归零和双极性不归零 波形的特点 掌握利用matlab产生数字基带信号的方法 二 实验任务 产生1000个随机信号序列 分别用单极性归零 单极性不归零 双极性归零和双极性不归零码
  • javascript中关键字in以及循环for...in的使用和注意事项

    写这篇文章 是因为在学习prototypejs库中方法Object extend 和Class create 看这篇指导 tutorial on classes and inheritance 的时候 对于什么能够继承 什么不能继承产生了一
  • 在ubuntu下搭建Qt Creator的arm交叉编译环境

    Qt Creator是跨平台的 Qt IDE Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境 IDE 此 IDE 能够跨平台运行 支持的系统包括 Linux 32 位及 64 位 Mac OS X 以
  • Python2.7 安装教程

    Python安装过程 1 下载安装程序 我们安装Python的一个重要目的是为了用IAR编译CC2640 OAD文件时执行合并文件的脚本 所以我们一起来看看Python2 7版本的安装方法 该版本安装程序的下载连接如下 https www
  • Conda/pip常用命令

    目录 1 管理与查看 1 1 查看conda版本 1 2 查看cuda driver的版本 2 虚拟环境 2 1 查看虚拟环境 2 2 创建虚拟环境 2 3 激活虚拟环境 2 4 删除虚拟环境 2 5 导出环境 导入环境 3 Package
  • docker上安装nacos

    文章目录 一 docker安装nacos简单版 1 拉取镜像 2 挂载目录 用于映射到容器 目录按自己的情况创建 3 mysql新建nacos config的数据库 并执行脚本 sql脚本地址如下 4 修改配置文件custom proper
  • 这5个很“哇塞”的不收费Python学习网站,说不定很适合现在的你

    作为一个现时代的程序员初学者 除了看书之外 互联网的学习手段也是断不能少的 给大家推荐几个比收费网站还要 香 的免费学习Python的网站 虽说不上全方位的满足你的需求 但是大部分也都能 1 菜鸟教程 http www runoob com
  • 怎么查看网页ajax发送的数据,如何查看我使用JQuery AJAX发送的SOAP请求数据

    userpass
  • C语言_输出字符串和获取字符串

    输出字符串和获取字符串 01 输出字符串 使用puts函数来输出字符串 使用printf函数来输出字符串 通过puts函数和printf函数都能够实现字符串输出 02 获取字符串 使用scanf函数来获取字符串 使用gets 函数来获取字符
  • Node.js Express框架

    node js express框架知识点详细解析 如下 express框架特性 可以设置中间件来响应 HTTP 请求 定义了路由表用于执行不同的 HTTP 请求动作 可以通过向模板传递参数来动态渲染 HTML 页面 安装 express 并
  • Data Matrix代码效率增强!条码组件TBarCode SDK最新版更新啦!

    TBarCode SDK一款多功能的条形码生成器和打印软件 适用于Microsoft Office用户和软件开发人员 您可以创建和打印所有用于工业和商业用途的条形码符号 使用TBarCode SDK 您可以使用条形码生成器软件 它已经在无数
  • 我是这样来做破解qq,做QQ外挂的 【-】

    file 2005beta2 IQQData IQQCore IDynamicData txt brief 2005beta2 IQQData IQQCore IDynamicData txt v1 0 2005 09 08 23 58 1
  • Diffusion Model原理详解及源码解析

    作者简介 秃头小苏 致力于用最通俗的语言描述问题 专栏推荐 深度学习网络原理与实战 近期目标 写好专栏的每一篇文章 支持小苏 点赞 收藏 留言 文章目录 Diffusion Model原理详解及源码解析 写在前面 Diffusion Mod
  • Spring Boot 实现多文件上传

    文件上传 Spring Boot代码 代码结构 Controller层 package com yqifei upload controller import io swagger annotations Api import org sp
  • php结合swoole 如何对接ChatGPT接口

    对接ChatGPT接口需要进行以下步骤 安装Swoole扩展和PHP cURL扩展 在项目中引入 composer require guzzlehttp guzzle 来安装 Guzzle HTTP客户端 编写HTTP请求代码调用ChatG
  • 面向对象的三大特性:继承、多态、封装--封装

    一 封装 1 广义的封装 实例化一个对象 给对象空间封装一些属性 class A def init self name selef name name 对象封装属性 2 狭义的封装 私有制 私有成员 私有静态字段 私有动态方法 私有对象 私