c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python中私有属性下划线和双下划线的区别是什么

更新时间:2023-12-22

私有属性下划线和双下划线的区别

在Python中,一个下划线 (_) 表示内部定义的属性或方法,即不应该在类或实例的外部被访问。而两个下划线 (__ ) 用于指示对象的私有属性或方法。

下划线表示的内容

在Python中,下划线有以下三种含义:

  • 单个下划线 (_):用于表示一个变量是私有的或者是内部的。这只是一个编程规约,Python解释器并不会对其作出任何保护机制。
  • 单个下划线作为变量名的开始(_var):需要一些特殊的处理,当 'from module import *' 这样的语句导入模块时,不会导入这样的变量。
  • 单个下划线作为初/结尾:不会被 Python 解释器实现特殊处理,但是一些 Python 程序员会将其用作特殊用途,例如作为交互式解释器里上一个表达式的结果。

单个下划线的示例

class User:
    def __init__(self, login_id, login_pwd):
        self._id = login_id
        self._pwd = login_pwd

user = User("abc", "123")
print(user._id)   #  Notice: 仍然可以从外部访问,只是强调内部用法

双下划线表示的内容

有时,开发人员希望确保他们的变量被认为是类的私有变量,不能从外部访问或使用。对于这种情况,双下划线 (__ ) 在 Python 中提供了一种机制。

双下划线的示例

class User:
    def __init__(self, login_id, login_pwd):
        self.__id = login_id
        self.__pwd = login_pwd
        
    def get_id(self):
        return self.__id
user = User("abc", "123")
print(user.__id)  # AttributeError: 'User' object has no attribute '__id'
print(user.get_id())

总结

在 Python 中,双下划线用于定义对象的私有属性或方法,这些属性或方法只能从内部有效的访问。单个下划线只是一个编程规约,用于表示一个变量是私有的或者是内部的。它们都不是真正的保护机制,而是提供了一种命名公约,让开发人员知道哪些变量或方法应该在类或对象的外部避免被访问。