python (伪)私有属性和私有方法
1、定义方式
在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法。
2、为什么要定义私有属性和私有方法
在实际开发中,对象的某些属性或方法只希望在对象的内部被使用,而不希望在外部被访问到。
2.1 私有属性或方法在对象内部可以被访问
class Person:
def __init__(self, name):
self.name = name
# 定义私有属性
self.__like = "看苍老师表演艺术"
def like(self):
# 私有属性在对象的内部是可以访问的
print(F"{self.name} 爱看电影,特别喜欢{self.__like}")
# 定义私有方法
def __secret(self):
print(F"私有方法在对象的内部是也是可以访问的")
def love(self):
# 私有方法在对象的内部是也是可以访问的
self.__secret()
xiaoming = Person("小明")
xiaoming.like() # 输出:小明 爱看电影,特别喜欢看苍老师表演艺术
xiaoming.love() # 输出:私有方法在对象的内部是也是可以访问的
2.2 私有属性或方法在对象外部不能被访问


3、为什么说私有属性或方法为“伪”
因为在Python中,并没有真正意义的私有,在定义私有属性或方法时,实际是对名称做了一些特殊处理,使得外界无法访问到。
处理方式是在私有属性或方法的名称前面加上 _类名 => _类名__名称
按照处理后方式,在外部一样可以访问到私有的属性或方法,但是在实际开发中建议不要这么做!


python (伪)私有属性和私有方法的更多相关文章
- python面向对象学习(三)私有属性和私有方法
目录 1. 应用场景和定义方式 2. 伪私有属性和私有方法 在java或者其他的编程语言中,使用访问修饰符来限制属性和方法的访问级别,一般有public.protected.default.priva ...
- python私有属性和私有方法
私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私 ...
- Python面向对象之私有属性和私有方法
01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 ...
- python-面向对象-06_私有属性和私有方法
私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私 ...
- JavaScript 新语法详解:Class 的私有属性与私有方法
译者按: 为什么偏要用 # 符号? 原文:JavaScript's new #private class fields 译者:Fundebug 本文采用意译,版权归原作者所有 proposal-cla ...
- Python3学习之路~6.5 私有属性和私有方法
属性分为静态属性和动态属性,静态属性就是变量,动态属性就是方法.但是一般我们说的属性就是变量,方法就是方法.私有属性/方法就是外面访问不了,只有自己能够访问的属性/方法.如何将属性和方法分别变成私有属 ...
- 私有属性和私有方法l
class Woman: def __init__(self, name): self.name=name self.__age=18 def __secret(self): print(" ...
- day16-封装(私有静态属性、私有属性、私有方法、类方法、静态方法)
# 一: class P: __age = 30 #私有静态属性 def __init__(self,name): self.__name = name #私有属性:属性名前面加上双下划线是私有属性. ...
- python 基础 5.4 类的私有属性和私有方法
一. 类的私有变量和私有方法 1> 在python 中可以通过在属性变量名前,加上双下划线定义属性为私有属性 2>特殊变量命名 a. _xx 以单下划线开头的表示的是protect ...
随机推荐
- 【Spring Framework】Spring IOC详解及Bean生命周期详细过程
Spring IOC 首先,在此之前,我们就必须先知道什么是ioc,ioc叫做控制反转,也可以称为依赖注入(DI),实际上依赖注入是ioc的另一种说法, 1.谁控制谁?: 在以前,对象的创建和销毁都是 ...
- 解决在进行socket通信时,一端输出流OutputStream不关闭,另一端输入流就接收不到数据
输出的数据需要达到一定的量才会向另一端输出,所以在传输数据的末端添加 \r\n 可以保证不管数据量是多少,都立刻传输到另一端.
- [特征工程] GBDT
- 【代码优化】List.remove() 剖析
一.犯错经历 1.1 故事背景 最近有个需求大致的背景类似: 我已经通过一系列的操作拿到一批学生的考试成绩数据,现在需要筛选成绩大于 95 分的学生名单. 善于写 bug 的我,三下五除二完成了代码的 ...
- TSN(Time-Sensitive Networking)协议导读
前言 上一个主题我们介绍了TSN的发展历史和协议族现状,它为建立统一的确定性网络传输基础设施提供了有力保障. TSN是一套协议标准,以保证确定性信息在标准以太网的不同场景下的顺利传输.TSN协议族本身 ...
- UIWindow介绍
1.作为容器,包含app所要显示的所有视图 3.与UIViewController协同工作,方便完成设备方向旋转的支持 1.addSubview 2.rootViewController 三.Wind ...
- 【Web】BUUCTF-warmup(CVE-2018-12613)
BUUCTF 的第一题,上来就给搞懵了.. .这要是我自己做出来的,岂不是相当于挖了一个 CVE ?(菜鸡这样安慰自己) 问题在 index.php 的 55~63 行 // If we have ...
- LuoguP7892 『JROI-3』R.I.P. 题解
Update \(\texttt{2021.10.11}\) 修改了一处公式错误,麻烦管理重新审核一下这篇已审核通过文章. Content 你在一个无限大的格子平面上,并且有 \(m\) 个长度为 \ ...
- LuoguP6904 [ICPC2015 WF]Amalgamated Artichokes 题解
Content 已知常数 \(p,a,b,c,d\),我们知道,第 \(k\) 天的股价公式为 \(price_k=p\times(\sin(a\times k+b)+\cos(c\times k+d ...
- WebRTC本地插入多个转发节点
网络延迟是一种比较常见的情况.在本地网页上,我们可以建立多个RTCPeerConnection,增加转发次数,来模拟出网络延迟的效果. 建立通话后,再往后面增加本地转发节点. 准备 页面准备,方便我们 ...