在Python中,我们经常会遇到变量、函数、类、模块名以“_”开头、结尾或双下划线开头结尾的情况,它们分别代表着不同的含义和使用场景。下面就具体探讨一下这些符号在Python中的作用。

1. 单下划线“_”
单下划线“_”是Python中的一个命名约定,用来指定变量、方法、类等不应该再外部模块中被调用的内部属性。这不是Python强制限制的,只是一种编码习惯。单下划线结合了一些特殊的方法和属性,让它们变成了“私有的”。
在模块中使用单下划线,表示模块内的变量、函数和类是内部实现,用户在导入模块时,不会导入以单下划线开头的对象。
总结来说,单下划线用于表示变量、方法、类等为保护属性,意味着这些属性不应该被外部调用或访问到。
2. 双下划线“__”
双下划线“__”是Python中的一个命名约定,被称为“名称修饰”。它可以有效地避免子类中的命名冲突。这样,不同的子类就可以定义自己的__foo()方法,双下划线可以避免父类成员名的冲突。当然,这只是Python的一种约定,而不是强制限制。
我们可以通过以下方式(_classname__identifier)访问双下划线的属性:
class MyClass:
def __init__(self):
self.__superprivate = "Hello, World!"
self._semiprivate = "Hello, Python!"
mc = MyClass()
print(mc._semiprivate) # 输出 Hello, Python!
print(mc.__superprivate) # 报错 'MyClass' object has no attribute '__superprivate'
print(mc._MyClass__superprivate) # 输出 Hello, World!
在上面的示例中,我们使用单下划线来表示表示变量为私有属性,使用双下划线修饰的属性是真正的私有属性。如果想要在类外访问类的私有成员,可以通过类名._类名__私有成员名来实现。
3. 双下划线“__xx__()”
双下划线结合第1个字符为给函数或属性命名,例如__init__()代表类的构造函数。Python中还有许多这样的双下划线特殊方法,可以灵活地定义类的属性、行为、操作符重载等等。例如:__str__()方法用于定义对象的文本输出格式;__lt__()方法用于定义“小于号”的操作符重载。
当我们定义一个类时,通常会重载双下划线开头和结尾的一些特殊方法,这可以帮助我们更好地使用Python语言的一些特定功能。
使用场景
1. 单下划线“_”
以下是单下划线的一些常见使用场景:
1.1 避免与Python关键字冲突。如sum_、type_
1.2 区分公共属性和类内部使用的属性。如_getval、_setval
1.3 暗示属性的使用约定。如_index
2. 双下划线“__”
以下是双下划线的一些常见使用场景:
2.1 避免与子类中的属性命名冲突。如__name
2.2 实现类的封装。
3. 双下划线“__xx__()”
以下是双下划线特殊函数的常见使用场景:
3.1 __init__():对象的构造函数
3.2 __str__():对象的文本输出格式
3.3 __lt__():小于号操作符重载
摘要:本文介绍了Python中单下划线“_”、双下划线“__”和双下划线特殊函数“__xx__()”的作用和使用场景。通过本文的学习,读者能够更好地掌握Python中这些特定的命名约定和使用方式。
关键词:Python、_、__、__xx__()、变量、方法、类、模块名、保护属性、私有属性、名称修饰、操作符重载、构造函数、文本输出格式、小于号操作符重载