首页
学习
活动
专区
工具
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关键字冲突而采用的命名方法。

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

    大家平时上网都是需要使用域名的,而其中有不少的用户都想要了解更多的关于域名和服务器信息,此时可能还会涉及到查询网站所有的子域名的操作。...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类中公开方法、私有方法和特殊方法的继承原理

    在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对象特殊方法及其用法演示,在创建派生类时,基类中已经实现的特殊方法可以被派生类继承。

    2.1K50

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

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

    68310

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

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

    1.7K30

    为什么百度查到的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.那么怎么连上网的呢,我们通过私网

    2.1K10

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

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

    6.9K10

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

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

    14410

    现在是不是越来越多的大公司在使用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在其工厂中的应用。

    83420

    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__接口的。

    56740

    【计网】从零开始认识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不足的情况!

    17310

    企业应该选择哪种区块链

    私有链 私有链是完全私有的区块链,指写入权限仅限于在一个组织手里的区块链。读取权限或者对外开放,或者被一定程度地进行了限制。...联盟链与私链类似,其开放程度和去中心化程度是有所限制的,其读写权、记帐权由组织决定。与私有链最大的不同在于,联盟链是为一个联盟,比如一个行业服务的;而私链则是为一个组织,比如一家公司内部服务。...但这样去区分会出现的问题是,实际上链的治理与参与者的能见透明度,该怎么去制定会根据采用者的需求不同而有所权衡,实际上的影响这个平衡因素则在文章后半会提出。...与大多数公有区块链相比,私人区块链提供了数量级更高的吞吐量,因为他们的共识设计不必包括对矿工的激励(Incentives),且区块链上成员的身份是已知的,激励因此可能丧失可信度,私链的可扩展性侧重于吞吐量而不是节点数量...对于私有区块链而言,这通常不是一个大问题,因为与一般公有链环境相比,参与者数量低了几个数量级,并且部署在具有低延迟和保证吞吐量的WAN中。

    1.6K00

    Python类中的属性

    Python有私有属性和方法吗? 我们在Python类的方法和属性的上下文中使用这两个术语,公共和私有。 当属性是私有的时,你不应该使用它;当方法是私有的时,你不应该调用它。...“私有”方法和属性 在Python中不存在真正的隐私。Python提供的是伪隐私或准隐私。它有两个级别,我称之为指示隐私和捉迷藏隐私。 指示隐私 你可以指示一个特定的属性是私有的。..._do_it() 是一个标识为私有的方法。因此,作为类的用户,你被要求不要使用它。它的存在是因为它有一些实现目的,而你与之无关。这不是一个秘密。你可以查看它,没有人会对你隐藏任何东西。...也许我们可以使用私有方法,但无论它们在做什么都对我们隐藏起来? 当然不是。只是._think()方法没有返回任何内容(或者返回None),但它将思想保存到._thoughts属性中,这也是私有的。...以这种方式命名的方法称为dunder(双下划线)方法——它们绝对不是私有的;实际上,它们与私有相反。我们将在其他时间讨论它们。

    18130
    领券