python前单下划线、前双下划线、前后双下划线的意义

Python中前单下划线的意义

在Python中,使用一个下划线作为变量名的前缀是一种约定,表示这是一个 私有变量。这意味着这个变量仅限于它所在的 模块 或 类 内部使用,而不能被其他代码直接访问。以下是一个例子:

class MyClass:

def __init__(self):

self._my_variable = 42

def my_method(self):

print(self._my_variable)

obj = MyClass()

obj.my_method()

print(obj._my_variable) # 这里会抛出 AttributeError

在这个例子中,我们声明了一个名为 _my_variable 的私有变量。在 MyClass 的内部使用它是没有问题的,但是在外部访问时会抛出 AttributeError 错误。

需要注意的是,Python 中的私有变量仅仅是一种约定,而不是强制执行的规则,因此可以通过类名来访问私有变量:

obj = MyClass()

print(obj._MyClass__my_variable) # 打印 42

这里的 __my_variable 实际上变成了 _MyClass__my_variable,这是一种名称修饰的方式,让私有变量在外部更难被访问。

Python中前双下划线的意义

在 Python 中,使用两个下划线作为变量名的前缀是一种约定,表示这是一个特殊的 Python 内置函数。例如,我们可以定义一个名为 __len__ 的方法来返回对象的长度,这个方法可以用于内置函数 len()。

class MyList:

def __init__(self, data):

self.data = data

def __len__(self):

return len(self.data)

my_list = MyList([1, 2, 3])

print(len(my_list)) # 打印 3

在这个例子中,我们重写了 __len__ 方法,并使用 len() 函数来调用它。

需要注意的是,Python 中的双下划线方法具有特殊的含义,因此不应该随意定义。对于大多数开发者来说,只需要了解 Python 内置函数的双下划线方法,就可以正确地使用它们。

Python中前后双下划线的意义

在 Python 中,使用双下划线作为变量名的前缀和后缀是一种约定,表示这是一个特殊的 魔术方法,也叫 特殊方法。这些方法用于实现 Python 语言的特殊语法和行为。以下是一些常见的魔术方法:

__init__(self, ...):对象初始化方法,在创建对象时被自动调用。

__repr__(self):对象的“[可打印] (https://docs.python.org/3/reference/datamodel.html#object.__repr__)”版本,用于调试。

__add__(self, other):对象加法运算方法,可以使用加号运算符。

__eq__(self, other):对象相等比较方法,可以使用等号运算符。

以下是一个使用魔术方法的例子:

class MyList:

def __init__(self, data):

self.data = data

def __repr__(self):

return str(self.data)

def __add__(self, other):

return MyList(self.data + other.data)

list1 = MyList([1, 2, 3])

list2 = MyList([4, 5, 6])

print(list1 + list2) # 打印 [1, 2, 3, 4, 5, 6]

在这个例子中,我们定义了 __repr__ 和 __add__ 两个魔术方法。__repr__ 方法返回 MyList 对象的 [可打印] 版本,__add__ 方法实现了对象的加法运算。

需要注意的是,使用双下划线作为前后缀的变量名具有特殊的含义,因此不应该随意定义。对于大多数开发者来说,只需要了解 Python 内置的魔术方法,就可以正确地使用它们。

后端开发标签