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

Python 中下划线的 6 个作用

当然了,这只是一种约定俗成,你要是遵守也是可以的,毕竟在后面你还可以通过下划线来获取这个变量的值。...(1, 2), (3, 4)]: print(i) 上面的代码表示我们只需要列表内部元组的第一个,第二个其实赋值给了下划线,虽然后面你可以通过下滑线来取到值,但是强烈建议你不要这么做,这违反了约定...__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr...', '__subclasshook__', '__weakref__', 'var3'] 有些时候,你会看到以一个下划线开头的实例变量名,比如 _name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定...5、作为变量名中间的一部分 相比驼峰命名,这叫做蛇形命名,比如 user_name。

35330

Python 中下划线的 6 个作用

当然了,这只是一种约定俗成,你要是遵守也是可以的,毕竟在后面你还可以通过下划线来获取这个变量的值。...1, 2), (3, 4)]: print(i) 上面的代码表示我们只需要列表内部元组的第一个,第二个其实赋值给了下划线,虽然后面你可以通过下滑线来取到值,但是强烈建议你不要这么做,这违反了约定...__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr..., '__subclasshook__', '__weakref__', 'var3'] 有些时候,你会看到以一个下划线开头的实例变量名,比如 _name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定...具体可以阅读如何写出令人惊叹的Python类 5、作为变量名中间的一部分 相比驼峰命名,这叫做蛇形命名,比如 user_name。

40320
您找到你想要的搜索结果了吗?
是的
没有找到

Python面向对象编程Day 26部分

python约定(并不是实际的限制)单下划线开头的变量为隐藏变量。...python会给双下划线开头的变量重命名(前加上'_ClassName')   第一个层面的封装:类就是麻袋,这本身就是一种封装   第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问(停留在约定层面...__getattr__函数(最重要,用的比较多)   删除一个对象的属性时会触发__delattr__函数   __setattr__(self,key,value)设置时触发  函数内self.key...__dict__.pop(item) 19 20 f1=Foo('alex')#触发__setattr__ 21 # f1.age=18 #触发__setattr__ 22 # print(f1....__dict__) 输出 执行setattr name alex 开始设置 {'name': 'ALEX'} 不允许删除属性【name】 {'name': 'ALEX'} 二次加工标准类型(包装) 授权是包装的一个特性

41130

我终于把Python中下划线的含义弄清楚了(憋了很久了)

阅读本文需要10.5分钟 Python中有关单个和双下划线(“ dunder”)的各种含义和命名约定,名称修饰的工作方式以及它如何影响Python类。...pass 总之,惯例使用单个尾划线(后缀)来避免与Python关键字的命名冲突。在PEP 8中解释了这种约定。...双首下划线: __var 到目前为止,我们所讨论的命名模式仅从约定约定中获得它们的含义。对于以双下划线开头的Python类属性(变量和方法),情况略有不同。...如果仔细查看,就会看到这个对象上有一个名为_testbaz的属性。这是Python解释器应用的命名混乱。这样做是为了保护变量不被子类覆盖。...避免为自己的属性使用此命名方案。 单下划线 _ 有时用作临时变量或无关紧要变量的名称(“无关紧要”)。 ----岁月有你 惜惜相处??

10.1K21

Python 里最具代表性的符号,竟如此强大

比如函数、方法或者属性。 这种保护不是强制规定,而是一种程序员的约定,解释器不做访问控制。一般来讲这些属性都作为实现细节而不需要调用者关心,随时都可能改变,我们编程时虽然能访问,但是建议访问。...使用from XXX import *是一种通配导入(wildcard import),这是 Python 社区推荐的方式,因为你根本搞不清你到底导入了什么属性、方法,很可能搞乱你自己的命名空间。...所以可见,“保护属性”是一种简单的隐藏机制,只有在from tools import *时,由解释器提供简单的保护,但是可以轻易突破。这种保护更多地依赖程序员的共识:访问、修改“保护属性”。...比较 lt le eq ne gt ge 类属性 getattr getattribute setattr delattr dir get set delete 格式化 bytes hash bool...var_用于解决命名冲突问题,使用时比较简单易懂的。_var对变量的保护,只是一种脆弱的保护,更多依靠程序员的约定。__var用于私有变量,借助改写机制支持,已经支持了私有变量,但是仍然存在漏洞。

73420

Python私有化及_下划线命名用途

引言 Python中没有真正的私有属性或方法,没有真正的私有化,但有一些和命名有关的约定,让编程人员处理一些需要私有化的情况,我们常常需要区分私有方法、属性和公有方法、属性以方便管理和调用。...一般Python约定前置单下划线 _ 的属性和方法为私有方法或属性,以提示该属性和方法 不应 在外部调用。...当然,在类中也可以用单下划线开头来命名属性或者方法,这只是表示类的定义者希望这些属性或者方法是 "私有的",但实际上并不会起任何作用。..._key) # 正常使用 __前置双下划线 用于对象的数据封装,以此命名属性或者方法为类的私有属性或者私有方法。...__名字的实例属性、方法会被 名字重整 name mangling >>> _类名__属性名 父类中属性名为 __名字 的,子类继承,子类不能访问。

85100

Python私有化及_下划线命名用途

引言 Python中没有真正的私有属性或方法,没有真正的私有化,但有一些和命名有关的约定,让编程人员处理一些需要私有化的情况,我们常常需要区分私有方法、属性和公有方法、属性以方便管理和调用。...一般Python约定前置单下划线 _ 的属性和方法为私有方法或属性,以提示该属性和方法 不应 在外部调用。...当然,在类中也可以用单下划线开头来命名属性或者方法,这只是表示类的定义者希望这些属性或者方法是 "私有的",但实际上并不会起任何作用。..._key) # 正常使用 __前置双下划线 用于对象的数据封装,以此命名属性或者方法为类的私有属性或者私有方法。...__名字的实例属性、方法会被名字重整 name mangling >>> _类名__属性名 父类中属性名为 __名字 的,子类继承,子类不能访问。

57710

Python中下划线的5种含义

:_ 在文章结尾处,你可以找到一个简短的“速查表”,总结了五种不同的下划线命名约定及其含义,以及一个简短的视频教程,可让你亲身体验它们的行为。...如果你遵循PEP 8推荐,避免通配符导入,那么你真正需要记住的只有这个: 单个下划线是一个Python命名约定,表示这个名称是供内部使用的。...pass 总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。 PEP 8解释了这个约定。 3....双前导下划线 __var 到目前为止,我们所涉及的所有命名模式的含义,来自于已达成共识的约定。 而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同了。...双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。 这也叫做名称修饰(name mangling) - 解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突。

1.5K70

Python下划线5种含义代码实例解析

pass 总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。 PEP 8解释了这个约定。...双前导下划线 __var 到目前为止,我们所涉及的所有命名模式的含义,来自于已达成共识的约定。 而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同了。...双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。 这也叫做名称修饰(name mangling) – 解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突。...__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr...self.foo变量在属性列表中显示为未修改为foo。 self._bar的行为方式相同 – 它以_bar的形式显示在类上。 就像我之前说过的,在这种情况下,前导下划线仅仅是一个约定

67720

Python中 5 种不同的下划线含义你都知道吗?

前言 本文将介绍Python中单下划线和双下划线("dunder")的各种含义和命名约定,名称修饰(name mangling)的工作原理,以及它如何影响你自己的Python类。...:_ 在文章结尾处,你可以找到一个简短的速查表,总结了五种不同的下划线命名约定及其含义,让我们马上开始!...如果你遵循PEP 8推荐,避免通配符导入,那么你真正需要记住的只有这个: “单个下划线是一个Python命名约定,表示这个名称是供内部使用的。...pass 总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。PEP 8解释了这个约定。 3....双前导下划线 __var 到目前为止,我们所涉及的所有命名模式的含义,来自于已达成共识的约定。而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同了。

85631

掌握 Python 中下划线的 5 个潜规则

前言 本文将介绍Python中单下划线和双下划线("dunder")的各种含义和命名约定,名称修饰(name mangling)的工作原理,以及它如何影响你自己的Python类。...:_ 在文章结尾处,你可以找到一个简短的速查表,总结了五种不同的下划线命名约定及其含义,让我们马上开始!...如果你遵循PEP 8推荐,避免通配符导入,那么你真正需要记住的只有这个: “单个下划线是一个Python命名约定,表示这个名称是供内部使用的。...pass 总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。PEP 8解释了这个约定。 3....双前导下划线 __var 到目前为止,我们所涉及的所有命名模式的含义,来自于已达成共识的约定。而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同了。

51320

说说Python编码规范

遵守这个文档的条件下,不同程序员编写的Python代码可以保持最大程度的相似风格。 这样就易于阅读,易于在程序员之间交流。 下面就说说Python编码时,应该遵守的编码规范有哪些。...: pass 这是继承自 object 是为了使属性(properties)正常工作, 并且这样可以保护你的代码, 使其不受Python 3000的一个特殊的潜在兼容性影响....包/模块名中的连字符(-) 双下划线开头并结尾的名称(Python保留, 例如init) 命名约定 所谓”内部(Internal)”表示仅模块内可用, 或者, 在类内是保护或私有的....函数命名使用全部小写的方式,可以使用下划线。 常量命名使用全部大写的方式,可以使用下划线。 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。...类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明a,访问时,只能通过Foo.

67130

为什么编程都建议不要用拼音命名

编程切记的一点是,要遵守约定俗成的代码规范。因为每一项技能,都有专业的标准,是千挑万选提炼出来的规则。 前人铺好的路如果走,非要往沟里踩,那就不合适了。...3、规范 拼音是可以用来命名,但这是极不规范、极不专业的表现,虽然不会报错,但不利于个人技术成长。就像前面说的,想要踢球,还是得用足球。...最后分享下Python PEP(Python Enhancement Proposal)对命名的规范要求。 变量、函数和属性应该使用小写字母来拼写,如果有多个单词就使用下划线进行连接。...类中受保护的实例属性,应该以一个下划线开头。 类中私有的实例属性,应该以两个下划线开头。 类和异常的命名,应该每个单词首字母大写。...类的实例方法,应该把第一个参数命名为self以表示对象自身。 类的类方法,应该把第一个参数命名为cls以表示该类自身。

65520

Python中的高阶概念属性:五个你应该搞明白的知识点

因为所有的狗都属于犬类属和犬科家族,所以我们创建了两个类属性,分别命名为属和科来存储这两条信息。如您所见,我们可以直接使用类来访问这些属性。...我们只是类比地使用这些术语,以便来自其他OOP背景的程序员更容易理解相关的编码约定(是的,只是一种约定,没有作为真正的访问控制加以加强)。 让我们首先讨论一下如何在Python中定义“私有”属性。...惯例是用两个前导下划线命名这些属性,并且不超过一个后引下划线。考虑下面更新过的Dog类的示例—为了简单起见,我们省略了前面定义的其他属性。 >>> class Dog: ......不像双下划线会导致混乱,单下划线前缀不会改变Python解释器处理这些属性的方式——它只是Python编程世界的一个惯例,表示他们(例如,编码器)希望你访问这些属性。..._nickname = name[0] 我们通过创建一个名为_nickname的实例属性来更新类Dog。正如其名称使用下划线前缀所表明的那样,按照约定,它被认为是一个“受保护”的属性

76121

python3--面向对象的进阶

找一个属性,直接就可以找到这个属性的值 找一个方法,找到的是这个方法的内存地址 getattr 使用字符串数据类型的变量名 访问一个命名空间中的名字 源代码 def getattr(object, ...'*10) # 从A的命名空间里找一个属性,直接就可以找到这个属性的值 # 通俗点就是需要获取谁(func),就是getattr(A,'func') getattr(类,'属性名') print(getattr...hasattr  # 判断一个命名空间中有没有这个名字   setattr  # 修改和新建 delattr  # 删除一个属性 setattr,delattr setattr源码 def setattr...__dict__) # 使用setattr: 无则增加有则修改的原则 setattr(a, 'age', 18)  # 给a对象新增一个属性 print(a....(a, 'qqxing', qqxing)  # setattr把函数qqxing 加到类里面去了 a.qqxing(a) # 使用getattr函数从命名空间中获取这个名字对应的值 getattr(

27920

【更正】【深入浅出C#】章节10: 最佳实践和性能优化:编码规范和代码风格

1.2 常见的C#编码规范 命名约定 在C#编码规范中,命名约定是其中一个非常重要的方面。良好的命名约定有助于代码的可读性和可维护性。...以下是一些常见的C#命名约定: PascalCase(帕斯卡命名法):PascalCase是一种命名约定,其中单词的首字母都大写,包含空格或其他分隔符。通常用于类名、结构体名、接口名和枚举类型名。...提高代码可移植性:编码规范要求采用一致的命名和组织结构,这有助于代码在不同的开发环境和平台上更容易移植和重新使用。 1.4 如何制定和遵守编码规范 制定和遵守编码规范是确保代码质量和一致性的关键步骤。...在不同编程语言中,某些命名约定约定可能会略有不同,但面向对象的思想和原则通常是通用的。...一旦选择了代码风格,团队应该积极遵守,并确保所有成员都了解和理解所采用的约定。不断审查和改进代码风格也是项目中的一个重要实践。

32210

【深入浅出C#】章节10: 最佳实践和性能优化:编码规范和代码风格

1.2 常见的C#编码规范 命名约定 在C#编码规范中,命名约定是其中一个非常重要的方面。良好的命名约定有助于代码的可读性和可维护性。...以下是一些常见的C#命名约定: PascalCase(帕斯卡命名法):PascalCase是一种命名约定,其中单词的首字母都大写,包含空格或其他分隔符。通常用于类名、结构体名、接口名和枚举类型名。...提高代码可移植性:编码规范要求采用一致的命名和组织结构,这有助于代码在不同的开发环境和平台上更容易移植和重新使用。 1.4 如何制定和遵守编码规范 制定和遵守编码规范是确保代码质量和一致性的关键步骤。...在不同编程语言中,某些命名约定约定可能会略有不同,但面向对象的思想和原则通常是通用的。...一旦选择了代码风格,团队应该积极遵守,并确保所有成员都了解和理解所采用的约定。不断审查和改进代码风格也是项目中的一个重要实践。

54830

C++命名方式建议

一个大型项目,参与开发人员众多,每个人的编码风格迥异,为保持代码风格统一,提高代码可读性与可维护性,一个重要的约定就是命名方式。...命名规则具有一定随意性,最重要的是坚一致性,无论你认为它们是否重要,规则总归是规则,我们应该遵守建议在代码中过于展示个人与众不同的风格。...2.类型命名 类型命名应该以帕斯卡命名法(Pascal 命名法)为准,又称大驼峰式命名法(Upper Camel Case命名法),类型名称的每个单词首字母均大写, 包含下划线。...所有类型命名 —— 类、结构体、枚举、类型定义(typedef)、类型模板参数,均使用相同约定。...大致规则为该命名法是在每个变量名的前面加上若干表示数据类型的前缀。基本原则是:变量名=属性+类型+对象描述。如d表示int,所有d开头的变量命都表示int类型。

68040
领券