首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Python的"私有"方法实际上不是私有的?

在Python中,私有方法的概念与其他编程语言(如Java、C++)中的概念略有不同。Python中的私有方法是通过在方法名前加两个下划线(__)来表示的,例如__private_method。然而,值得注意的是,这种私有性仅在类定义的内部有效。

这是因为Python并没有强制实施私有方法的概念,这意味着在类的外部仍然可以访问以双下划线开头的方法。这种设计选择是为了尊重Python的灵活性和哲学:“我们都是成年人”。

因此,尽管Python中的私有方法不是真正的私有,但它们仍然有一定的用途。它们可以在类内部隐藏实现细节,提醒其他开发者不要直接访问这些方法,但它们并不能完全阻止外部访问。

总结一下,Python的私有方法实际上不是私有的,因为它们仍然可以在类的外部访问。然而,它们在类内部起到了一定的作用,提醒开发者不要直接访问这些方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python对象私有属性和私有方法

私有方法就是对象不希望公开方法定义方式:在定义属性或方式时,在属性名或者方法名前增加两个下划线,定义就是私有属性或发方法。...__age)这段代码注释掉,来看看带有私有私有属性方法能不能执行答案:可以执行图片总结:在对象方法内部,是可以访问对象私有属性3....看看私有方法能不能执行,修改代码:图片总结:私有方法在外界也是不能够被直接访问----二、【科普】伪私有属性和伪私有方法提示:在日常开发中,不要使用这种方式,访问对象私有属性或私有方法。...Python中,并没真正意义私有。1. 在给属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到2....处理方式:在名称前面加上 _类名 =》 _类名_名称把私有属性和私有方法改造后让其在外界也能被访问到:改造之前:图片改造之后:图片在日常开发中并不要去访问对象私有属性或者私有方法,因为私有属性和私有方法是对象隐私

1.6K10

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

但是Python属性和方法在类外部默认是可以访问,而有些属性和方法我们只允许在类内部使用,不允许在类外部使用。这种情况下,可以使用类私有属性和私有方法。 ?...一、私有属性 Python中通过一对前缀下划线“__”属性名来定义私有属性。...虽然私有属性和私有方法不能直接从外部访问和修改,但是通过间接方法,我们还是获取到了,也修改了。 这说明,在Python类中,没有真正私有属性和私有方法。...不过,这并不是私有属性和私有方法没有用,首先,外部不能直接使用了,其次,我们可以在访问私有属性和私有方法间接方法中做一些必要验证或干扰,保证数据安全性,隐藏私有方法实现细节。 ?...4.单后缀下划线“_”变量和方法,这种命名方法主要是为了避免与Python关键字冲突而采用命名方法

2.9K30
  • python调用私有属性方法总结

    同样为私有属性,有的开发语言中是真私有属性,有的是假私有属性。 例如 :在 OC 开发过程中出现私有属性就是假私有属性,通过 runtime 可以很方便拿到私有属性并进行修改。...同出师门,swift 中私有属性就是真私有属性,通常需要 private 来修饰。 那么在 python 开发中,我们如何来定义一个私有属性呢?...正确调用方法为: print(obj._Person__age) 控制台就可以打印出:18 同样,可以重新给私有属性赋值 obj._Person__age = 20 print(obj....由此可知,在 Python私有属性为假私有属性。那为什么不从语法上保证 private 字段私密性呢?用最简单一句话来说:We are all consenting adults here。...正如Python 程序员观点:开放要比封闭好。 综上所述: Python 编译器无法严格保证 private 字段私密性。

    1.9K30

    查询网站所有的子域名方法 为什么要查询

    大家平时上网都是需要使用域名,而其中有不少用户都想要了解更多关于域名和服务器信息,此时可能还会涉及到查询网站所有的子域名操作。...image.png 如何进行域名查询 查询网站所有的子域名听起来有点复杂,但其实并不是特别难事情,因为现如今已经有一些网站和工具可以提供此项服务了。...有的公司在一些域名平台上注册,通常这些平台也可以提供查询服务,子域名越多,所需要时间也会相应增加,不过并非所有的子域名都可以查出来,所以要根据自己需要选择工具。...查询网站所有的子域名是有必要,原因首先是子域名数量如果是多个,那么很可能会存在漏洞,无法保障安全,所以搜集子域名信息就需要被重视了。...再者如果想要得知注册者、注册和到期日期等信息,也可以通过查询获得。 以上就是关于查询网站所有的子域名相关介绍,可见查询途径绝非一种,但是否好用就见仁见智了,适合自己才是最好方式。

    6.2K20

    Python类与方法私有

    2.方法私有Python类默认情况下,所有的方法都可以被外部访问。...如果执行上面的代码,会抛出如下图所示异常信息,原因是调用了私有方法method2。 ? 其实“method2”方法不是绝对不可访问。...抛出异常原因并不是“method2”方法私有化了,而是Python编译器把“method2”名称改为“_Personmethod2”了。...本例会创建一个MyClass类,并定义两个公共方法(getName和setName)和一个私有的方法(outName)。然后创建了MyClass类实例,并调用了这些方法。...为了证明Python编译器在编译MyClass类时做了手脚,本例还使用了inspect模块中getmembers函数获取MyClass类中所有的成员方法,并输出方法名。

    1.1K60

    python中类属性方法私有

    2.类方法私有化 其实私有化只需要在方法名前加两个下划线即可,举例: def __sayHello(self): print("hello,"+self.name) 而实际上,这种类型私有化并不是绝对不能被调用...,我们可以采用类名称前加一个下划线以及定义整个私有方法拼接组合成一个新方法名称就可以调用。..._Person__sayHello() 提问:为什么私有类可以被调用呢? 在python中,私有方法在被编译时候,实际上就是在这个方法名称前面拼接了下划线和类名称。...,刷选依据) 3.分析结论: 无论是类方法还是类属性,只要在方法或者属性名称前面加上两个下划线,那么就会被python编译器自动私有化,会在这个名称前面加上一个_类名称。...三、总结强调 1.掌握类属性定义和调用 2.掌握类方法定义和调用 3.掌握类属性和方法私有化 4.掌握使用inspect库来查看类有的属性和方法成员。

    1.6K10

    为什么我们机器学习平台支持Python,而不是R

    前言 免责声明:以下内容是基于作者观察——而不是一个行业学术调查。 有很多文章比较了Python和R在数据科学方面的相对优点。但是这并不在这篇文章讨论范围。...有些人可能特别喜欢一种语言语法,或者可能更喜欢R默认绘图库(ggplot2),而不是Matplotlib或其他Python选项。也有其他人会指出Python比R更具有表现力。...仅有的几家使用机器学习技术开发产品公司也有相当规模机器学习研究团队,如谷歌、Facebook和Netflix。 然而,web开发领域很快就分成了研究人员和实践者。...负责它们的人不是数据分析师,而是工程师(就职责而言,而不是头衔而言),他们使用是软件工程师熟悉工具和语言,比如Python。R始终是生成仪表板和报告有效工具。...我们关注不是设计新模型,而是工程问题,比如: 与流行机器学习框架集成最佳语言是什么?---Python 哪种语言最适合编写请求处理代码?---像Python这样通用语言。

    67510

    Python类中公开方法私有方法和特殊方法继承原理

    Python中,对象私有成员在类外部、派生类或程序中无法直接访问,但是可以通过“对象名._类名__私有成员名”这样一种特殊形式来访问。...,会继承基类构造方法 >>> class B(A): #这不会覆盖基类私有方法 def __private(self): print('__private() method in...', '__class__', ...] >>> class C(A): #显式定义构造函数 def __init__(self): #这里调用是类C私有方法...由于这个内容对于理解Python继承机制很重要,在《Python程序设计基础》、《Python程序设计(第2版)》和《Python可以这样学》这几本书中都提到了,可能是书上注释少了点,很多朋友还是看不明白...另外,Python类还有大量特殊方法,详见Python对象特殊方法及其用法演示,在创建派生类时,基类中已经实现特殊方法可以被派生类继承。

    2K50

    中文编程语言有哪些-为什么 Python 不是未来编程语言?

    为什么不使用 Scikit-Learn 呢?   无论你想做哪种计算任务,都有相应 Python 软件包。这使得 Python 一直处于发展前沿,从过去几年机器学习火热浪潮中可以看出来。   ...2 Python 缺点以及这些缺点是否会致命   基于前面的阐述,你可以想象 Python 在未来几年仍将兴盛不衰。但是,像所有的技术一样,Python 也有它弱点。...Lambda   尽管 Python 具有所有的灵活性中文编程语言有哪些,但 Lambda 使用还是相当受限。Lambda 只能是 Python表达式,不能是语句。   ...对于较大项目,这个方法更有用。   像 这样新语言解决了这个问题:它们依赖于空格,但为那些希望不使用空格的人提供了另一种语法。   ...运行时错误   Python 脚本不是先编译后执行。相反,它会在每次执行时编译,因此,任何编码错误都会在运行时显示出来。这会导致性能差、耗时长,并且需要进行大量测试。比如,很多很多测试。

    1.7K30

    谈谈Python:为什么类中私有属性可以在外部赋值并访问

    Python为什么类中私有属性可以在外部赋值并访问?...问题引入 在慕课网上学习Python**类中私有属性**时候,看到了一个同学提问: 将count改为__count,为什么实例变量在外部仍然可以修改__count?这里print p1....太长但还是要看看版: 知识点清单: 1、类“伪私有属性” 2、在类外部动态地创建类属性 问题解决过程: 1、“伪私有属性”概念: python类中通过加双下划线来设置私有属性”其实是...“伪私有属性”,原理是python编译器将加了双下划线“属性名”自动转换成“类名属性名”。...以上这篇谈谈Python:为什么类中私有属性可以在外部赋值并访问就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.9K10

    为什么百度查到ip和ipconfig查到不一样;详解公网Ip和网ip;详解网络分类ABC;

    ,就可以集中使用私有的IP进行管理,而大家可以共用一个IP去连接上公网,这样,就省下了许多宝贵Public IP。...我们能看到这两个地址是不同,那么不是说,每个主机都只有一个ip地址么,为什么我们查到两个Ip地址不一样呢。...百度查出来地址是你上网共有地址,也许并不是你主机地址,而是电信或联通分给你地址,用于连接互联网。 也就是我们要引出网Ip和公网IP这两个概念,下文会有提示。...isp组织分给我们Ip地址,但是这个ip地址一般不是给个人,一般都是给一个单位,一个区域,也就是说我们实际上能接触到一般都是私有地址,即我们用ipconig查到都是私有地址,也就相当于局域网内...上文中,我们知B类私有地址范围是:172.16.0.0~172.31.255.255,我们学校采取就是这种划分方法,所以我网ip地址就是172.18.251.129.那么怎么连上网呢,我们通过

    2K10

    为什么你们电视有的App无法安装,建议大家用这个方法试试,可以解决80%问题

    一、apk版本不兼容 一般来说,当我们从网上下载apk程序版本比当前设备版本高,就会在安装程序时出现“解析包出现错误”警告。 解决方法:在应用市场下载相匹配设备版本。...解决方法:这种情况只要删除不完整安装包重新下载即可,下载好apk拷贝到优盘再安装到电视上。 三、名称或者路径不对 当前设备不支持中文名称或路径,不支持长文件名。...可以用一台电脑测试一下,看看是不是U盘本身出现问题不能读取数据。 将U盘连接电视或者电视盒子USB接口,如果U盘上灯没有闪并且盒子上也没有跳出对话框提示,那可能是USB接口坏了。...以下是一些可能导致这种情况常见原因和解决方法: 1.不兼容应用版本:确保你下载APK文件是适用于你电视型号和操作系统版本。有时,应用可能需要特定版本Android或TV操作系统。...如果尝试上述方法后仍然无法安装APK文件,你可能需要查看电视错误日志或提供更多详细信息,以便更好地诊断问题。

    4.3K10

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

    私有属性和方法 在实际开发中,对象某些属性或者方法可能只希望在对象内部别使用,而不希望在外部被访问到,这时就可以定义私有属性和私有方法。...定义方法 在定义属性或方法时,在属性名或者方法名前增加两个下划线__,定义就是私有属性或方法。...但是,通过一些代码,我们也可以在外部访问一个对象私有属性和方法。..._类名__私有属性名 可以直接访问对象私有属性 p._Person__shopping(100) # 使用对象名._类名__函数名 可以直接调用对象私有方法 print(p...._类名__私有属性名 方式来访问对象私有属性! 定义方法访问私有变量 在实际开发中,如果对象变量使用了 __ 来修饰,就说明它是一个私有变量,不建议外部直接使用和修改。

    13210

    现在是不是越来越多大公司在使用Python为什么

    从事软件开发多年,对于Python脚本使用主要在构建编译体系时候用到了主要在编写编译脚本时候比较好用,到现在演化成一种热门编程语言了,主要原因是编程语言呈现一种集成化发展方向,生态链圈子构建方便并且类库贡献的人多就会受到推崇...,目前符合这种特性JAVA和Python是典型代表,加上Python被称之为胶水语言,几乎和很多编程语言都可以混搭,所以火一塌糊涂。...可以预见未来Python必将在编程领域占据一席之地,现在欧美很多国家直接在小学范围内开设编程课,课程主体就是Python,说明了其简单易学,一个很复杂功能如果调用Python类库可能几句话就能完成了...Python现在还是培训机构最爱,简单易学就业前景广泛,培训机构就喜欢易学就业好方向,Python和前端都符合这种特性,但在实际找工作过程中是不是Python受到极大推崇,有个朋友有一年多Python...开发经验然后在西安找工作,搞了几个月都没有找到合适工作,深深感叹当初为什么没有选择JAVA作为编程语言来学习,并且发誓一定要在工作过程中学会JAVA,所以虽然Python非常热闹但在企业实际开发过程中用

    1.1K40

    5G网“乘车论”:公共交通OR专属座驾?

    由于5G将建立在4G和4.5G LTE技术基础上,同样私有5G网络也将建立在已经推出私有LTE网络上,其中大部分使用5G设备。 为什么要建立私有5G网络?...私有网络也是采用3GPP标准部署蜂窝网络,目前已有多种形式,包括私有的低功耗广域网络(LPWAN)、基于LTE宽带无线专网和5G专网,这些网络与公网在物理上隔离,专网专用能够做到安全性和服务保障。...虽然网络切片也能提供类似专网体验,但一些行业用户依然愿意自建网。 自建5G网是成本最高但也是最可靠方案。实际上,在4G时代行业客户自建LTE例子也并不少见。...安全性:私有5G网络比现有技术更安全,因为网络运营商将能够建立自己安全策略,而不是依赖外部提供商,它还可以使数据存储在本地。...目前这些仍然是未知数,但我们可以确定是,私有的5G网络不会便宜。 目前私有5G网络发展进程 2018年夏天,奥迪与爱立信签署了一份谅解备忘录(MoU),以探索5G在其工厂中应用。

    83020

    【计网】从零开始认识IP协议 --- 理解网段划分,NAT策略,私有IP和公网IP,认识公网

    从零开始认识IP协议 1 为什么要进行网段划分 我们以一个例子来讲解为什么要进行网段划分: 在我们学校里,学生学号都是精心设计过:16位二进制数表示,前6位表示学院号,后10位表示学生号。...实际上, 由于一些特殊 IP 地址存在,数量远不足 43 亿,另外 IP 地址并非是按照主机台数来配置,而是每一个网卡都需要配置一个或多个 IP 地址。...这是最高效解决IP地址不足方法!但是目前 IPv6 还没有普及。 3 私有IP和公网IP 在使用Linux进行网络编程时,我们经常会遇见两个名词:私有IP和公网IP。这两个IP到底有什么区别?...其实这里已经触犯了一个原则:网IP是不能出现在公网中!!! 网IP不具有唯一性!不能作为目的IP和源IP进行通信!!!所以这样结构还不是网络通信模型!!!那么到底是怎样进行呢?...现在我们就彻底理解了网络中IP到底是怎么划分了: 上层公网可以直接进行通信,每个子网都拥有自己网络号! 下层采用私有IP和公有IP结合方法来应对IP不足情况!

    12310

    python迭代器为什么一定要实现__iter__方法

    这是个和多态有关问题,Python中关于迭代有两个概念,第一个是Iterable,第二个是Iterator,协议规定Iterable__iter__方法会返回一个Iterator, Iterator...__next__方法Python 2里是next)会返回下一个迭代对象,如果迭代结束则抛出StopIteration异常。...Python中许多方法直接返回iterator,比如itertools里面的izip等方法,如果Iterator自己不是Iterable的话,就很不方便,需要先返回一个Iterable对象,再让Iterable...生成器表达式也是一个iterator,显然对于生成器表达式直接使用for是非常重要。 那么为什么不只保留Iterator接口而还需要设计Iterable呢?...iter方法也会处理这种情况,在不存在__iter__时候,返回一个下标迭代iterator对象来代替。一个重要例子是str,字符串就是没有__iter__接口

    56140
    领券