Python下划线的多种应用场景总结
1. 单下划线
在Python中,单下划线前缀的变量、函数、类名等,表示这个名称是内部使用的,不应该被外部使用。具体举例:
1.1 声明私有变量
单下划线经常用来表示私有变量,即只能在类内部访问的变量,例如:
class Demo:
def __init__(self):
self._num = 0 # _num是私有变量,可以在类内部调用,但是建议不要在类外部调用
demo = Demo()
print(demo._num) # 不建议这样写,因为这是访问了类的私有属性
1.2 声明模块级别的代表内部使用的变量
单下划线还可以用在模块中,代表该变量是内部使用的,不希望被导入:
# demo.py
def _test():
print("This is a private function, you should not call it from outside.")
def test():
print("This is a public function, you can call it from outside.")
if __name__ == '__main__':
_test()
test()
# main.py
from demo import test
test() # 可以被导入
demo._test() # 不可以被导入
2. 双下划线
在Python中,双下划线前缀的变量,表示这个名称是私有的,不能被子类继承或覆盖。例如:
class Demo:
def __init__(self):
self.__num = 0 # __num是私有变量,不能被子类继承或覆盖
class DemoChild(Demo):
def __init__(self):
super().__init__()
self.__num = 1 # __num是私有变量,覆盖了父类的__num
demo = Demo()
print(demo.__num) # 报错,__num是私有变量,不能在类外部调用
3. 单下划线和双下划线
单下划线和双下划线的组合方式也非常常见,它们都表示私有的,但是有些特殊用途,例如:
3.1 前后双下划线
以双下划线开头且以双下划线结尾的变量表示Python中的魔法方法或特殊方法。这些方法是Python内置方法,提供了一些直接操作类对象的界面,例如:
class Demo:
def __init__(self, value):
self.__value = value
def __repr__(self):
return f"<Demo obj with value {self.__value}>"
demo = Demo(10)
print(demo) # <Demo obj with value 10>
3.2 前面单下划线加双下划线
以单下划线和双下划线开头的变量表示弱私有变量,即可以被子类继承或覆盖,但是不建议这样做。例如:
class Demo:
def __init__(self):
self._Demo__value = 0 # 不建议在类外部直接使用
class DemoChild(Demo):
def __init__(self):
super().__init__()
self._Demo__value = 1 # 覆盖了Demo的__value
demo = Demo()
print(demo._Demo__value) # 可以被调用
总结
在Python中,通过单下划线和双下划线的使用,可以表示变量的私有性和特殊性。合理地使用下划线,能够提高代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 下划线的多种应用场景总结 - Python技术站