返回

用得好,就能写出有质量的代码:Python中的_、__和__xx__

见解分享

_(单下划线)

在Python中,单下划线(_)通常用于表示私有方法或属性。它并不是真正的私有,因为它仍然可以通过对象._name的方式访问。但是,它表明该方法或属性不应被直接调用,而是应该被视为内部实现的一部分。

例如:

class MyClass:
    def __init__(self):
        self._secret_attribute = 42

在这个例子中,_secret_attribute被标记为私有属性,但仍然可以通过MyClass._secret_attribute访问。

__(双下划线)

双下划线()在Python中有着特殊含义。它用于表示特殊方法,如__init(初始化方法)、str(字符串表示方法)和__add__(加法运算方法)。特殊方法允许我们自定义对象的特定行为。

例如:

class MyVector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):
        return MyVector(self.x + other.x, self.y + other.y)

在这个例子中,__add__特殊方法使我们能够将两个MyVector对象相加,而无需编写额外的代码。

xx(多重下划线)

多重下划线(xx)在Python中用于表示Python解释器使用的特殊方法。这些方法通常用于实现特殊功能,如名称解析(name)、属性访问(getattr)和错误处理(exception)。

例如:

class MyClass:
    def __getattr__(self, name):
        if name == "secret_attribute":
            return 42
        else:
            raise AttributeError(f"Attribute {name} not found")

在这个例子中,__getattr__特殊方法使我们能够访问不存在的属性,并返回一个自定义值。

使用准则

在使用下划线时,遵循以下准则很重要:

  • 单下划线(_)用于表示不应直接调用的私有方法或属性。
  • 双下划线(__)用于表示特殊方法,可用于自定义对象的特定行为。
  • 多重下划线(xx)用于表示Python解释器使用的特殊方法。

通过理解_、__和__xx__之间的区别,你可以更有效地编写Python代码,并创建更清晰、更健壮的应用程序。