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学习资料,包含面试题、简历资料等具体看下方。


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

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

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

img

二、Python兼职渠道推荐*

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

三、最新Python学习笔记

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

img

四、实战案例

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

img

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

若有侵权,请联系删除

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

相关推荐

Python中的私有属性私有方法

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

CyberNerdX的博客 242

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

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

qq_33782655的博客 1214

文献综述三大痛点用AI轻松解决!借助Gemini 3 Pro搞定检索难、阅读慢、框架乱问题(附 AI 提示词)

4)“漏斗式”结构:先介绍宏观领域的研究现状,再缩小范围,聚焦于与你课题直接先关的子领域,深入探讨与你研究变量直接相关的文献, 指出前人没做过、没做全或结论有矛盾的地方,再顺势提出你的研究课题,这种结构逻辑最清晰,能直接引导读者发现你研究的必要性。想要有针对性的搜到相关文献,必须先把模糊的研究题目拆解成精准的检索语言,这个时候就需要建立一个关键词矩阵,如核心词、同义词、学术术语、上下位词,以及对应的英文表达。请围绕【我的研究主题/关键词】,检索近5年发表的高被引的中英文文献,优先选择顶刊综述/论文。

智能AI让学术科研更容易 254

Python私有属性私有方法

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

m0_59485658的博客 5089

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

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

monster_hahaha的博客 523

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

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

zxn_0823的博客 284

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

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

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

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

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

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

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

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

lyy962464的博客 470

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

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

weixin_44131922的博客 1266

Python---私有

在做程序的过程中,有时候程序猿不想让外人动一些值,这个时候,就可以考虑把一些变量进行私有化__属性:就是将属性私有化,访问范围仅仅限于类中。

weixin_73888239的博客 1524

Python入门【私有属性私有方法(实现封装)、@property 装饰器、属性方法命名总结 、类编码风格 、关于None判断的总结 、面向对象三大特征介绍、继承】(十五)

Python入门【私有属性私有方法(实现封装)、@property 装饰器、属性方法命名总结、类编码风格、关于None判断的总结、面向对象三大特征介绍、继承】(十五)

abc19991119的博客 1853

Python私有化属性、私有方法、Property属性、_new_方法、单例模式、错误与异常处理、动态添加属性与方法以及_slots_属性

本文仅仅简单介绍了Python私有化属性、私有方法、Property属性、_new_方法、单例模式、错误与异常处理、动态添加属性与方法以及_slots_属性,并进行了相应练习

weixin_53245463的博客 1868

Python属性自省:深入了解属性访问与限制

还可以通过定义一些特殊方法来自定义类实例的属性访问行为。这些特殊方法可以控制属性的获取、设置删除操作。方法:获取一个属性时,Python 会首先调用该方法。我们可以在这个方法中自定义属性的获取行为。例如,可以在方法中检查属性是否存在,并返回相应的值。方法:设置一个属性时,Python 会调用该方法。我们可以在这个方法中自定义属性的设置行为。例如,可以在方法中对属性进行类型检查,然后使用方法设置属性的值。方法:删除一个属性时,Python 会调用该方法。我们可以在这个方法中自定义属性的删除行为。

mate1357的博客 1356

python私有属性数据封装

实际上,私有属性会被重命名为。总的来说,封装强调的是将数据操作数据的方法组合在一起,并控制对数据的访问修改,私有属性在实现这种控制方面起到了重要作用,但公共属性的合理使用管理也是封装的一部分。封装的目的是将数据操作数据的方法封装在一个类中,只通过公共方法来提供对外的接口,以控制对数据的访问修改,提高代码的可维护性可扩展性。总的来说,私有属性公共属性都是类的属性,用于描述类的状态,但私有属性提供了更严格的访问控制,有助于实现良好的封装代码设计。是公共属性,可以在类的外部直接访问修改,如。

zhendianluli的博客 1159

如何理解Python中的私有属性私有方法?

在上面的示例中,MyClass类有一个公共属性public_attribute一个私有属性__private_attribute,以及一个公共方法public_method一个私有方法__private_method。需要注意的是,虽然在Python中可以通过添加前缀"_"来访问私有属性方法(例如obj._MyClass__private_attribute),但这不被建议,因为它违反了类的封装原则,破坏了类的内部实现细节。私有属性私有方法在命名时以双下划线"__"开头,但不以双下划线结尾。

zy1992As的博客 460

专转本-信息通信技术-笔记

专转本-信息通信技术-笔记

大今野 1350

multi_array.rar_天线 阵_相控阵 仿真_相控阵matlab_相控雷达天线_雷达仿真参数

仿真了相控阵雷达的天线方向图,能进行不同的状态参数设置,产生的天线方向图

上一篇: 谁能拒绝一个接私活的绝佳平台呢?
下一篇: 如何在 Python 函数之间传递数据
Python_P叔
博客等级 码龄3年 5358粉丝 827原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值