优草派  >   Python

python中 _、__、__xx__()区别及使用场景

陈思远            来源:优草派

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

python中 _、__、__xx__()区别及使用场景

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__()、变量、方法、类、模块名、保护属性、私有属性、名称修饰、操作符重载、构造函数、文本输出格式、小于号操作符重载

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行