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