Python中双下划线前缀有什么用途?

Python中双下划线前缀有什么用途?

在Python中,双下划线前缀 “__” 是一种特殊的命名方式,用来表示私有属性或方法。那么,什么是私有属性或方法呢?私有属性或方法是指只能在类内部被访问的属性或方法,无法在类的外部被直接访问。

阅读更多:Python 教程

私有属性的定义

在Python中,如果一个属性的名字以双下划线 “__” 开头,则该属性为私有属性,无法从类的外部直接访问。

下面是一个私有属性的示例代码:

class MyClass:
    def __init__(self, value):
        self.__value = value

my_instance = MyClass(10)

# 属性名为 __value,在类外部无法直接访问,下行代码会报错
print(my_instance.__value)  

以上代码中,我们创建了名为 MyClass 的类,并在其中定义了一个名为 init 的构造函数。在构造函数中,我们定义了一个名为 __value 的私有属性,并将其初始化为传入的参数 value。

随后,我们创建了一个 MyClass 的实例 my_instance,并尝试在类外部直接访问实例的属性 __value。由于该属性为私有属性,所以下行代码会报错。

私有属性的访问

虽然无法直接从类的外部访问私有属性,但是Python提供了一种特殊的访问方式,即使用双下划线前缀加上类名,在类的内部访问私有属性。

下面是一个私有属性访问的示例代码:

class MyClass:
    def __init__(self, value):
        self.__value = value

    def print_value(self):
        print(self.__value)

my_instance = MyClass(10)
my_instance.print_value()

在以上代码中,我们定义了 MyClass 类,并在其中新增了一个名为 print_value 的方法。该方法可以访问该类实例的私有属性 __value,并将其打印出来。

由于我们在类内部定义了该方法,所以在调用时可以成功访问私有属性,并打印出其值。

私有方法的定义

类似于私有属性,在Python中也可以定义私有方法。如果一个方法的名字以双下划线 “__” 开头,则该方法为私有方法,无法从类的外部直接访问。

下面是一个私有方法的示例代码:

class MyClass:
    def __init__(self, value):
        self.__value = value

    def __print_value(self):
        print(self.__value)

    def print_value(self):
        self.__print_value()

my_instance = MyClass(10)
my_instance.print_value()

以上代码中,我们在 MyClass 类中定义了一个名为 __print_value 的私有方法,该方法可以打印该类实例的私有属性 __value

为了在类的外部调用该方法,我们新增了一个名为 print_value 的公有方法,并在其中调用 __print_value 方法。这样,在类的外部我们就可以通过 print_value 方法访问 MyClass 实例的 __value 私有属性,并打印出其值。

总结

在Python中,使用双下划线前缀可以定义私有属性或方法,使其无法在类的外部被直接访问。但是,仍然可以通过特殊的访问方式,在类的内部访问该属性或方法。私有属性和方法的定义可以增强代码的封装性和安全性,使得外部代码无法乱改内部状态,提高代码的可靠性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程