Python 函数、变量中单下划线和双下划线的区别详解
在 Python 中,函数和变量名可以使用单下划线和双下划线来命名,这里详细讲解它们之间的区别。
单下划线
在 Python 中,单下划线 _
通常用来表示一个变量或函数是私有的,即只能在模块内部使用。
示例:
class MyClass:
def __init__(self):
self._private_var = 42
def _private_method(self):
print('This is a private method.')
my_class = MyClass()
print(my_class._private_var) # 这里可以使用单下划线变量
my_class._private_method() # 这里可以调用单下划线方法
双下划线
在 Python 中,双下划线 __
用来表示一个变量或函数是私有的,并且 Python 将其重命名,以避免子类和类之外的代码的名称冲突。
示例:
class MyClass:
def __init__(self):
self.__private_var = 42
def __private_method(self):
print('This is a private method.')
class MyChildClass(MyClass):
def __init__(self):
super().__init__() # 调用父类的初始化方法
self.__private_var = 999 # 由于父类的 __private_var 已被重命名,这里会创建一个新的私有变量
def __private_method(self):
print('This is a child class method.')
my_class = MyClass()
print(dir(my_class)) # 这里查看到 __private_var 和 __private_method 都被 Python 重命名了
print(my_class._MyClass__private_var) # 这里的访问方式需要使用新的名称
my_class._MyClass__private_method() # 这里的访问方式需要使用新的名称
my_child_class = MyChildClass()
print(dir(my_child_class)) # 这里查看到 __private_var 和 __private_method 都被 Python 重命名了
print(my_child_class._MyClass__private_var) # 这里的访问方式需要使用新的名称
my_child_class._MyClass__private_method() # 这里的访问方式需要使用新的名称
总结
单下划线只是一种编码约定,用于表示一个变量或函数是私有的,但并没有 real privacy,类或模块外的代码仍然可以使用单下划线标记的变量和函数。而双下划线是真正的私有,Python 会将其重命名,以避免名称冲突。
在 Python 中,一般情况下不需要过度使用双下划线私有化变量和函数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 函数、变量中单下划线和双下划线的区别详解 - Python技术站