Python变量的下划线

  • xx: 公有变量
  • _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
  • __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
  • xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字 xx_:单后置下划线,用于避免与Python关键词的冲突
### Python下划线变量的使用规则、意义及场景 #### 单前置下划线 `_variable` 单前置下划线通常用于模块级别或类成员中,作为一种约定俗成的方式表明该属性或方法是受保护的,不建议外部直接访问。然而,这只是程序员之间的默契,并不会阻止实际访问[^1]。 ```python class Test: _protected_var = "This is a protected variable" def __init__(self): self._another_protected_method() def _another_protected_method(self): print("Protected method called") ``` #### 双前置下划线 `__variable` 当一个名字以前置双下划线开始时,Python 解释器会对这个名字进行重命名处理,即所谓的“名称改编”,目的是防止派生类意外覆盖基类中的同名成员。具体来说,`__spam` 形式的标识符会被替换为 `_classname__spam` 的形式,在大多数情况下还会加上一个额外的后缀下划线[^4]。 ```python class BaseClass: __private_var = "Base Class Private Variable" def get_private(self): return self.__private_var # 实际上变成了 _BaseClass__private_var class DerivedClass(BaseClass): __private_var = "Derived Class Private Variable" # 不会覆盖父类的私有变量 print(DerivedClass().get_private()) # 输出: Base Class Private Variable, 表明子类并未覆盖掉父类的私有字段 ``` #### 后置单下划线 `var_name_` 为了遵循 PEP8 编码风格指南,如果希望使用的变量名恰好是一个保留关键字,则可以在其后面加一个下划线以避免语法错误并保持代码清晰度[^3]。 ```python class_ = ["Math", "Physics"] # 避免与内置 'class' 关键字冲突 for item in class_: print(item) ``` #### 连续多个下划线 `____` 虽然可以创建连续多于两个以上的下划线作为变量名的一部分,但这并不常见也不推荐这样做,因为这可能会引起混淆并且不符合社区编码习惯。一般只会在某些特殊场合见到像 `__main__` 或者其他类似的魔法方法/属性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值