Python中的对象有私有属性和私有方法吗?

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

在Python中,对象的私有属性和私有方法在命名上有限定,必须在属性名或者方法名前面加上双下划线"__"(名字后面不能加双下划线),之后便无法从外部直接调用。私有属性名和私有方法名本质都是一个符号或者说一个地址,我们下面的实验环节以私有方法来验证。

1、代码验证

按照惯例,直接上代码:

上图中定义了一个Person类,具备公有方法speak()和私有方法__run(),现在分别调用speak()方法和__run()方法,

运行结果:

从运行结果中可以看出,Person类实例化后,init()方法和speak()方法成功调用,但是__run()方法调用失败,提示"Person没有属性__run"。

至此,一切都很合理,然而真相到底是什么,我们来分析看看。

2、原因分析

还是回到Pycharm,我们用强大的dir()内置函数查看下person对象的属性和方法:

其中有个"_Person__run"非常可以,我们尝试下是否能调用:

居然真的能调用,等等,这不就是私有方法__run()吗?

我们再尝试定义一个私有方法试试:

定义私有方法__play()

运行一下:

看到没?又多了一个"_Person__play"的方法,且能够调用。

也就是说,私有方法虽然无法直接调用,但是可以通过"_类名__私有方法名"的方式调用。

3、总结

在Python中其实并没有真正的私有属性或者私有方法,底层在属性名或者方法名上做了一些处理,让调用者通过原属性名或者方法名无法直接调用,实际上是将真名隐藏了起来,但是通过dir()函数是可以看到,具体的格式如下:

_类名__私有属性名
_类名__私有方法名

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

Python之私有属性、私有方法、装饰器及属性和类的命名规则 xxx:保护成员,不能用导入,只有类对象和子类对象能访问这些成员。(⚠️讲完模块再看)__xxx__:系统定义的特殊成员__xxx: 类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外部可以通过对象名. _类名__xxx这种特殊方式访问。Python不存在严格意义的私有成员)⚠️ 再次强调,方法和属性都遵循上面的规则。 阅读详情

相关推荐

Python中的私有属性和私有方法

总结一下,私有属性和私有方法在Python中是通过在名称前面添加一个下划线来定义的。尽管私有属性和私有方法在类外部的实例中是不可见的,但在类内部仍然可以被访问和调用。在Python中,私有属性和私有方法的命名约定是在成员名前面添加一个下划线(单个下划线),这种约定并不强制,只是作为一种惯例来防止对这些成员的直接访问。私有属性和私有方法是指那些在类内部可见,但在类外部无法直接访问的成员。这些属性可以通过类的实例访问,但私有属性在类外部的实例中是不可见的。在类外部是不可见的,只能在类内部被访问和调用。

CyberNerdX的博客 245

Python学习笔记--私有属性、构造方法、析构方法、常用内置方法

私有属性、构造方法、析构方法、常用内置方法

qq_33782655的博客 1217

Qt之QSqlTableModel:高效数据库操作与视图绑定的实战指南

本文深入探讨了Qt框架中的QSqlTableModel组件,它作为连接数据库与Qt视图的智能中介,能极大简化数据库的增删改查操作。通过实战代码演示,详细讲解了如何快速构建可编辑的数据表格、理解并设置关键的数据编辑策略(如OnManualSubmit),以及实现数据过滤、排序等高级功能。文章还提供了性能优化、事务处理及常见避坑指南,帮助开发者高效、稳健地开发数据库驱动的桌面应用。

y4z5a6b7的博客 440

Python私有属性与私有方法

1、 场景定义 私有属性 是指在 Python 的面向对象开发过程中,对象的某些属性只想在对象的内部被使用,但不想在外部被访问到这些属性。 即:私有属性是对象不愿意公开的属性。 私有方法 是指在 Python 的面向对象开发过程中,对象的某些方法或者称为函数只想在对象的内部被使用,但不想在外部被访问到这些方法或函数。 即:私有方法是对象不愿意公开的方法或函数。 2、 语法定义 在 Python 中定义私有属性和私有方法的语法如下: class Staff: def __ini..

m0_59485658的博客 5094

Pytorch transformers tokenizer 分词器词汇表添加新的词语和embedding

NLP添加新词汇

7322

别再手动调参了!用MATLAB+改进PSO算法,5步搞定机械臂轨迹优化(附完整代码)

本文介绍如何利用MATLAB和改进PSO算法快速优化机械臂轨迹规划,仅需5步即可完成传统耗时的手动调参过程。通过混沌初始化、自适应权重等创新方法,改进PSO算法显著提升优化效率,实现全局最优解搜索,适用于工业自动化中的机械臂控制。文章包含完整MATLAB代码实现,帮助工程师轻松应用于实际生产场景。

weixin_29232121的博客 354

Python面向对象中的类方法,静态方法以及私有属性和私有方法

1.类属性和类方法 1.定义: 类属性:针对类对象定义的方法,使用赋值语句在class关键字下可以定义类属性; 类方法:针对类对象定义的方法,在类方法内部可以直接访问类属性或者调用其他的类方法; 2.代码示例: class Toy(object): # 使用赋值语句 记录所有的玩具数量 count = 0 def __init__(self,name): ...

monster_hahaha的博客 524

2022年全球市场微波等离子体CVD反应器总体规模、主要生产商、主要地区、产品和应用细分研究报告

据GIR (Global Info Research)调研,按收入计,2021年全球微波等离子体CVD反应器收入大约 百万美元,预计2028年达到 百万美元,2022至2028期间,年复合增长率CAGR为 %。

MARKETRESEARCH的博客 1137

python中的类和对象、封装特性、继承、私有属性与私有方法

1.类和对象与封装特性 1.类(Class)是现实或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。 对象(Object)是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。 类(Class)是是创建实例的模板对象(Object)是一个一个具体的实例 2.封装:顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。所以,在使用面向对象的封装特性时,需要: 1). 将内容封装到某处 2). 从某处调用被封装的内容 1). 通过对...

zxn_0823的博客 285

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

关于自制的《航空学报》latex模板(非官网模板)

《航空学报》的官网只提供了word模板,并且该期刊投稿只需要pdf版本不需要源文件。为方便latex爱好者撰写论文,提供该模板及说明给广大科研人士~

qq_37105055的博客 4693

【从零学习python 】44.面向对象编程中的私有属性和方法

本文介绍了面向对象编程中的私有属性和私有方法。在实际开发中,我们经常需要将某些属性或方法限制在对象的内部使用,而不希望被外部直接访问。通过在属性或方法名前添加双下划线__,可以定义私有属性和私有方法。私有属性和方法只能在对象的内部访问和调用,外部无法直接访问。 然后,文章讨论了如何在外部访问私有属性和方法。通过在私有属性或方法名前添加_类名的方式,可以间接地访问对象的私有属性和方法,但在实际开发中不推荐使用这种方式。 最后,文章介绍了如何通过定义公开的get和set方法来访问和修改私有变量。通过这种方式

全栈若城,专注知识分享 4398

03、AC分析

本节我们将对之前的BUCK电路进行AC分析! 首先,我们之前的BUCK电路是开环电路,现在我们把它设计成闭环电路!电路图如下: 我们对闭环BUCK电路先瞬态仿真一下,波形如下: 然后在电路中加入小信号和波特图进行AC仿真 原理图如下: 增益为0时所对应的相位裕度为56°,这个相位裕度一定要大于0°,大于45°则比较稳定! ...

soumns丶涛的博客 3519

python面向对象中的私有属性和私有化方法

xx: 公有变量 (公有) _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) (私有) xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init, __ 不要自己发明这样的名字 xx_:单后置下划线,用于避免与Python...

即使是不成熟的尝试,也胜于从不执行的策略。 390

uniapp - HBuilder提示adb: failed to install X Failure [INSTALL_ARSE_FAILED_NOT_APK:X(安装HBuilder调试基座失败)

安装HBuilderX调试基座失败,uniapp APP运行到手机adb: failed to install,Uniapp提示adb,uniapp ios 真机调试报错 uniapp安卓调试,Uniapp安装不了基座,手动安装基座,正在安装手机端HBuilder调试基座,点击运行到手机报错信息:基座无法正常安装,Uniapp-安装HBuilder调试基座失败解决方案,解决 HBuilderX 安卓基座安装失败的问题,显示adb报错,UniApp苹果真机运行调试(自定义基座,版本更新后/没有基座打开失败)如

🏆 前端领域优质创作者 8061

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python中的面向对象之私有属性和私有方法、新旧式类

一、私有属性和私有方法 1、应用场景及定义方式 1)应用场景     在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到     私有属性:就是对象不希望公开的属性     私有方法:就是方法不希望公开的方法 2)定义方法     在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法 二、新式类和旧式类 新式类和旧式(经典)类...

lyy962464的博客 473

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python中的类(class)面向对象 理解和学习整理,构造方法,私有属性,专有方法

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。python 在设计时也是符合面向对象的原则的,和 Java 类似也存在类的创建,类的成员属性,成员方法,构造函数,类之间的继承等操作。子类虽然继承了父类的方法,但是不能满足子类想要的结果,那么可以在子类中再次重写该方法,最终子类调用时就会走自己的实现了。简单的来一个,一个人的类,有名字,有年龄两个属性。有两个方法或者说函数,一个是吃,一个是喝。

weixin_44131922的博客 1272

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python中的面向对象(简单类的创建以及内置方法,私有属性和私有方法的使用)

一、什么面向对象和面向过程? 面向对象:主要是针对的是一个对象,将所有的功能封装成一个对象,让对 象去实现具体的细节,这就好比,我们想要吃一个蛋糕,将制作蛋糕的原材 料封装后交给蛋糕房,让蛋糕房来生产蛋糕。 优点:解决了程序的扩展性,对某一个信息的修改比较容易,然后反映到这 个体系中。 缺点:可控性差,面向对象的程序一旦开始就由对象之间的交互解决问题,无法预测最终结果。 面向过程:主要针对...

ZGGHUAN 2030

一文搞懂 Python 私有属性 & 私有方法

1. 场景定义私有属性是指在 Python 的面向对象开发过程中,对象的某些属性只想在对象的内部被使用,但不想在外部被访问到这些属性。即:私有属性是对象不愿意公开的属性。私有方法是指在 Python 的面向对象开发过程中,对象的某些方法或者称为函数只想在对象的内部被使用,但不想在外部被访问到这些方法或函数。即:私有方法是对象不愿意公开的方法或函数。2. 语法定义在 Python 中定义私有属性和私有方法的语法如下: (1). __salary是以两个下划线开头来定义的私有属性。(2). __secret

Python+大数据+数据分析+自动化+Vue组件开发 1万+

Python对象的 [私有属性和私有方法]、[伪私有属性和伪私有方法]

在日常开发中并不要去访问对象的私有属性或者私有方法,因为私有属性和私有方法是对象的隐私,既然是隐私在外界就不要轻易去访问。

weixin_48728769的博客 713

Python 面向对象(三) 类的私有属性和私有方法

python中的私有属性和私有方法

qq_44954371的博客 1097

Python中的私有属性和方法

私有属性和方法是指在类中不希望被外部直接访问和修改的变量和函数。在Python中,通过在属性或方法名前添加双下划线(__),可以将其设为私有属性或方法。私有属性和方法只能在类的内部访问,外部代码无法直接访问它们。

2202_75569688的博客 882
上一篇: 谁能拒绝一个接私活的绝佳平台呢?
下一篇: 如何在 Python 函数之间传递数据
Python_P叔
博客等级 码龄3年 5451粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值