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

Python:使用双下划线

Python中的双下划线(__)用于表示特殊的命名约定和方法重写。下面是对双下划线的不同用法的解释:

  1. 双下划线作为前缀和后缀的特殊方法:Python中有一些特殊方法,以双下划线作为前缀和后缀命名,例如__init____str____len__等。这些特殊方法在对象的创建、字符串表示、长度计算等方面起着重要作用,可以根据需要进行重写以实现特定的功能。
  2. 双下划线作为前缀的魔术方法:有一些双下划线方法被称为魔术方法或魔术函数,用于在类的定义中实现特定的功能。例如,__new__方法用于创建一个新的实例,__getattr__方法用于在访问不存在的属性时触发特定的行为。
  3. 双下划线名称重整(Name Mangling):Python中的双下划线名称重整是一种命名约定,用于处理类的属性和方法名冲突的问题。在类定义中,如果属性或方法名以双下划线开头但不以双下划线结尾(例如__private_var),Python会将该名称重整为_ClassName__private_var的形式。这样可以避免在子类中意外地重写或访问父类的属性和方法。
  4. 双下划线作为变量名前缀:在Python中,以双下划线开头的变量名(例如__name)被视为私有变量,意味着它们仅在类内部可见。这种命名约定是一种约定俗成的方式,用于指示某个变量是供内部使用的,并且不应该直接从外部访问。

总之,Python中的双下划线具有多种用途,用于表示特殊的命名约定、方法重写和变量的可见性。这些特性可以通过适当的使用来提高代码的可读性和可维护性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器:提供灵活可扩展的云服务器,满足各种计算需求。
  • 腾讯云对象存储(COS):可靠、安全、高性能的云端对象存储服务,适用于存储和处理大规模非结构化数据。
  • 腾讯云人工智能:提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,助力开发者构建智能化应用。
  • 腾讯云区块链服务:提供全托管的区块链服务,为企业提供安全可信赖的区块链网络。
  • 腾讯云云原生容器服务:提供高可用的容器集群管理服务,支持容器化应用的部署、运行和扩展。

请注意,以上仅为腾讯云的相关产品示例,其他云计算品牌商也提供类似的产品和服务。

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

相关·内容

​【Python】单下划线下划线的区别

Python下划线作为前缀和后缀指定特殊变量和定义方法,主要有如下四种形式: 单下划线(_) 名称前的单下划线(如:_name) 名称前的下划线(如:__name) 名称前后的下划线(如:__init...__) 单下划线(_) 只有单划线的情况,主要有两种使用场景: 1、在交互式解释器中,单下划线“_”代表的是上一条执行语句的结果。...但是Python不像Java一样具有私有属性、方法、类,在属性和方法之前加单下划线,只是代表该属性、方法、类只能在内部使用,是API中非公开的部分。...类前面是单下划线,类名后面是下划线,然后再加上方法或者属性。但是并不建议调用,因为这是Python内部进行调用的形式。 回答完第一个问题,我们看看第二个问题,Python这样设计的目的是什么?...名称前后的下划线:这类方法是Python内部定义的方法,你可以重写这些方法,这样Python就可以调用这个重写的方法以及利用操作符。

3.9K70
  • python变量前的单下划线(私有变量)和下划线

    1.单下划线变量前的单下划线表示表面上私有 ,但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问...2.下划线变量前的下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问。...3.其他(如:init):名称前后的下划线是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。通常,你将会覆写这些方法,并在里面实现你所需要的功能,以便Python调用它们。...例如,当定义一个类时,你经常会覆写“init”方法总结:前面单下划线_var变量所在模块/类以外的地方也能访问该变量,但最好不要前面下划线__privateVar变量所在模块/类以外的地方不能访问该变量...,这是私有变量前后下划线如__name__和__init__Python内置特殊变量,哪儿都可以访问示例:class MyName: _name = "WinerChan111" # 伪私有变量

    1.5K40

    Python: 深入理解中下划线(Dunder)模块

    Python的世界里,__future__这样的模块,其名称两端都有下划线,被称为下划线或“Dunder”(来自“Double Under”)模块。这类模块在Python中扮演着特殊的角色。...Dunder模块,如__future__、__main__和__builtins__,是Python的内置模块,它们有一些共同的特性: 命名规范:模块名以下划线开头和结尾,这是一种Python中的命名约定...2.1 功能 __future__模块允许开发者在当前Python版本中使用未来版本的某些特性。...例如,如果一个新的语言特性计划在Python 3.8中引入,开发者可以通过从__future__导入这个特性,在Python 3.7中提前使用它。...2.2 使用案例 python from __future__ import print_function # 使用Python 3的print函数特性 print("Hello, Future!")

    54310

    python中那些下划线开头得函数和变量

    Python下划线---完全解读 Python下划线作为变量前缀和后缀指定特殊变量_xxx 不能用from module import *导入__xxx__系统定义名字__xxx类中的私有变量名核心风格...因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;“下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。...以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *而导入;以下划线开头的__foo代表类的私有成员;以下划线开头和结尾的__foo...如果要创建自己的类,且对象之间的比较有意义,可以使用下面的特殊方法来实现比较。序号目的所编写代码Python 实际调用①相等x == yx.__eq__(y)②不相等x != yx.

    6610

    python技巧之下划线

    更多相关信息见““Importing * in Python”。 下划线前缀的名称(例如__shahriar) 以下划线做前缀的名称(特别是方法名)并不是一种惯例;它对解释器有特定含义。...前后都带有下划线的名称(例如__init__) 这些是Python的特殊方法名,这仅仅是一种惯例,一种确保Python系统中的名称不会跟用户自定义的名称发生冲突的方式。... 下划线开头的命名形式在 Python 的类成员中使用表示名字改编 (Name Mangling),即如果有一 Test 类里有一成员 __x,那么 dir(Test) 时会看到 _Test__x 而非...但要注意这要求该名称末尾没有下划线下划线开头下划线结尾的是一些 Python 的“魔术”对象,如类成员的 init、del、add、getitem 等,以及全局的 file、name 等。...另外单下划线开头还有一种一般不会用到的情况在于使用一个 C 编写的扩展库有时会用下划线开头命名,然后使用一个去掉下划线Python 模块进行包装。

    14910

    Python中的下划线

    可以作为一个临时变量,用来接收各种没什么用的变量,这种用法多见于各种生成器产生数据时,有的时候生成器返回的数据我们只需要用到其中的部分变量,那么那些没有用到同时在赋值时不能缺少的变量就可以用_接收,除此以外,单下划线在...的保留字的话,这个时候如果想要使用该保留字作为变量名称,则可以加一个_,如创建一个变量class_。...,因此在使用类似于from XXX import *这种导入形式时,这类变量并不会被导入,但是依旧可以通过在源模块的访问方式中进行访问(保护变量不做访问限制)。...当然,python社区并不希望我们使用from XXX import *这种通配导入的方法,因为这样的导入很容易影响到我们的命名空间(尽管去除了保护变量) 一般来说,突破保护属性的方法有两种: 一种是将保护属性加入到...all列表(__all__=[_var])中,接着我们就可以使用from XXX import *导入在列表中的保护属性。

    45720

    (二十八) 初遇python OOP面向对象编程-魔法方法(下划线方法)

    各位读者大大们大家好,今天学习python的面向对象编程-魔法方法(下划线方法),并记录学习过程欢迎大家一起交流分享。 ?...新建一个python文件命名为py3_oop5.py,在这个文件中进行操作代码编写: #面向对象编程 #魔法方法 #打印1+2的值 print(1+2)#3 #这里实际是调用了 #int的魔法方法__...= int(self.pay * self.raise_amount) #如下魔法方法是 #实际重写了内置函数repr()和str() #后面学到再说 #repr一般用来调试,记录日志使用...#110000 print(len(emp_2))#7 运行结果: 3 3 ab ab T Bag-T.Bag@email.com Employee T Bag 50000 110000 7 今天初学python...的面向对象编程-魔法方法(下划线方法)学习就到这里!

    39220

    Python下划线的作用

    单前导下划线 _var是一个Python命名约定,表示这个名称是供内部使用的。 它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示。2....单末尾下划线 var_单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突;像class或def这样的名称已经被一个关键字所占用,附加一个下划线来解决命名冲突。3....前导下划线 __varPython解释器自动在这种下划线的私有方法或者私有属性的前面加上了 _类名 ,所以使用原定义的变量名和方法名访问不了变量和方法, 在规范上,这种下划线的私有方法和私有属性是不应该在外部访问的...前导和末尾下划线 _var_Python保留了有前导和末尾下划线的名称,用于特殊用途。...这样的例子有,__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用,所以尽量不用这种表示方式,以免和python冲突。5.单下划线 _某个变量是临时的或无关紧要的。

    63110

    Python下划线的详解

    本文将讨论Python下划线(_)字符的使用方法。我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已。...单下划线(_) 通常情况下,会在以下3种场景中使用: 1、在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果。...名称前的单下划线(如:_shahriar) 程序员使用名称前的单下划线,用于指定该名称属性为“私有”。这有点类似于惯例,为了使其他人(或你自己)使用这些代码时将会知道以“_”开头的名称只供内部使用。...名称前的下划线(如:__shahriar) 名称(具体为一个方法名)前下划线(__)的用法并不是一种惯例,对解释器来说它有特定的意义。Python中的这种用法是为了避免与子类定义的名称冲突。...名称前后的下划线(如:__init__) 这种用法表示Python中特殊的方法名。其实,这只是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。

    54940

    关于Python的前后、单下划线作用,看完这篇文章,吊打面试官!

    来源:清风python python的各种下划线Python中,可能最常见的就是各种常量、变量、函数、方法前后添加的那些下划线了。有前面加的、后面加的,加一个的,加两个的,看到头晕。...单前导下划线 单前导下划线(_xxx),作为Python的命名约定,表示仅供内部使用。但注意这个命名约定,在类中你使用单前导线声明的变量,**依然可以在外部直接访问。**那这种命名约定还有什么意义呢?...虽然使用起来矛盾,但是面试阴人必备有木有? 单末尾下划线 单末尾下划线(xxx_),按照PEP8规定,单末尾下划线也是一个约定 用来避免与python关键字产生命名冲突。...前导和末尾下划线 日常开发中,最好避免在自己的程序中使用下划线(“dunders”)开头和结尾的名称,因为它是Python语言定义的一种特殊方法(魔法方法),我们熟知的__init__ 、__dict..._Demo__say_hello() 我们定义一个Demo类,其中存在前导下划线的__name __say_hello,当我们使用通常的调用方式时,是无法执行的,但Python的私有属性声明时,其实就是将某个私有属性前添加单下划线

    3.2K10

    Python下划线---完全解读

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始...因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; “下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。...以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;以下划线开头的(__foo)代表类的私有成员;以下划线开头和结尾的...__subclasshook__(C) python中以下划线的是一些系统定义得名称,让python以更优雅得语法实行一些操作,本质上还是一些函数和变量,与其他函数和变量无二。 比如x.

    1.6K110

    Scala基础 - 下划线使用指南

    正因如此,下划线这个特殊符号无形中增加Scala的入门难度。本文希望帮助初学者踏平这个小山坡。 1....1.1 导入通配符 *在Scala中是合法的方法名,所以导入包时要使用_代替。...如果是后者则要借助下划线: printArgs(List("a", "b"): _*) 1.4 类型通配符 Java的泛型系统有一个通配符类型,例如List<?...Tuple元素 val t = (1, 2, 3) println(t._1, t._2, t._3) 3.2 简写函数字面量(function literal) 如果函数的参数在函数体内只出现一次,则可以使用下划线代替...小结 下划线在大部分的应用场景中是以语法糖的形式出现的,可以减少击键次数,并且代码显得更加简洁。但是对于不熟悉下划线的同学阅读起来稍显困难,希望通过本文能够帮你解决这个的困惑。

    1.5K61

    一日一技:在Python下划线私有方法不能被调用的原理

    使用Python编写面向对象的代码时,我们会常常使用“继承”这种开发方式。...这是因为,在Python里面,类方法或者属性如果以下划线开头,那么他们就是类的私有方法,在被继承的时候,即使子类有相同名字的以下划线开头的属性或者方法也不会覆盖父类。...而且这些以下划线开头的私有方法或者属性,在类内部可以自由被其他方法调用,但是在实例对象里面是不能直接调用的,如下图所示: 那么Python是如何实现这一点的呢?...Python仅仅是改了一个名字,在这种下划线的私有方法或者私有属性的前面加上了 _类名,这样就确保了子类和父类的方法名不一致。...所以,虽然 在规范上,这种下划线的私有方法和私有属性是不应该在外部访问的,但是如果你想强行访问,可以个使用这种改名以后的名字: kingname = PeopleInfo() kingname.

    1.7K30
    领券