python中单下划线和双下划线命名规则

背景

在阅读源代码时,我们通常会看到其中有很多使用下划线作为命名元素的方法和变量。之前,有些时候虽然不影响我们debug和跑通代码。但不知其所以然,心里总是不踏实的。故而在看了小甲鱼的视频及阅读了几篇文章后,将其命名规则记录如下。

Python 中的单下划线和双下划线 - 知乎,这是在所有我看到过的文章中,对于下划线的讲解最清晰的,大家也可以直接看这篇文章。如果不想看文章,可以去b站找小甲鱼的视频,还有代码演示,更好理解。

前导双下划线

前导双下划线是一个特殊的命名约定,当类中使用双下划线作为属性或方法的前缀时,它表示该属性或方法是私有的。但这里的私有是要加引号的,因为python中并没有真正的私有(private),这里的私有是因为,当在类中使用双下划线作为前缀时,Python 解释器会自动修改属性名,以避免在子类中发生命名冲突。这个过程被称为名称修饰(name mangling)

比如在类C中定义了一个变量为 __x,那么python解释器会自动将其改名为 _C__x,故如果你确实想在类外访问,可以使用 c._C__x来访问该变量

前导单下划线

前导单下划线(Leading Single Underscore)通常用于命名变量、方法和属性,表示这些命名的元素是【私有】的或者说是【内部使用】的。

这种规定也并不是真正的“private”,而是一种约定俗成的规范,用前导单下划线命名,就是为了告诉程序员们,这个变量or方法or属性 是内部使用的,不要在类外直接访问或修改。但如果就是头铁,python解释器也是不会报错的。不过,这就像电闪雷鸣时,在树下躲雨一样,不怕一万就怕万一!

so,当我们看到前导单下划线的命名时,就把它当成完完全全的“private”就好了

单下划线后缀

单个后缀下划线(Single trailing underscores)通常用于避免与 Python 关键字产生命名冲突。它被用作标识符的后缀,以示与Python关键字有所区别。

比如因为某些莫名其妙的原因,你要使用class来命名某个变量,那么你可以将其命名为 class_

前后双下划线

这类方法叫做Dunder 方法,指的就是以双下划线(__)开头和结尾的特殊方法(也称为魔术方法或特殊方法)

这些方法具有特殊的行为,可以在自定义类中重写以改变类的行为。Dunder方法的名称是Python中预定义的,例如__init____str____repr__等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MosesCD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值