建设银行手机银行银行下载官方网站,神农架网站建设,如何搭建自己的小程序,跳动爱心代码html教程Python 私有变量和私有方法介绍 关于 Python 私有变量和私有方法#xff0c;通常情况下#xff0c;开发者可以在方法或属性名称前加上单下划线#xff08;_#xff09;#xff0c;以表示该方法或属性仅供内部使用#xff0c;但这只是一种约定#xff0c;并没有强制执行禁…Python 私有变量和私有方法介绍 关于 Python 私有变量和私有方法通常情况下开发者可以在方法或属性名称前加上单下划线_以表示该方法或属性仅供内部使用但这只是一种约定并没有强制执行禁止外部访问。要真正实现“私有”的效果可以在方法或属性名称前加上双下划线__在 Python 内部自动将方法或属性名称改写这样就无法从类的外部直接访问了但仍然可以通过在其前面添加单下划线和类名的方式来访问。
Python 私有变量
在Python中私有变量是指在类定义中以两个下划线__开头的变量。这些变量被认为是私有的因为它们不能从类的外部直接访问。
【Python 私有变量的官方说明 https://docs.python.org/zh-cn/3/tutorial/classes.html#private-variables 】
Python将双下划线作为前缀来对属性进行名称修饰使得这些属性在类的外部无法通过简单的名称访问。但是在类的内部这些属性可以像其他属性一样使用只不过需要使用特殊的名称来引用它们。
例如
class MyClass:def __init__(self):self.__private_var 42def get_private_var(self):return self.__private_varmy_object MyClass()
print(my_object.get_private_var()) # 输出结果42
#print(my_object.__private_var) # 报错AttributeError: MyClass object has no attribute __private_var
print(my_object._MyClass__private_var)# 输出结果42 可以这样访问私有变量但是不建议在上述代码中我们定义了一个名为 MyClass 的类并在其构造函数 __init__() 中设置了一个私有变量 __private_var。然后我们定义了一个名为 get_private_var() 的方法该方法返回私有变量 __private_var 的值。
当我们创建一个新的 MyClass 实例并调用 get_private_var() 方法时我们可以成功地获取私有变量的值并输出它。但是当我们尝试直接访问私有变量 __private_var 时Python会抛出 AttributeError 异常因为该属性不是公共的不能从类的外部直接访问。
需要注意的是在Python中私有属性不是真正的私有。它们仍然可以通过特殊的名称来访问。具体来说Python将私有变量名解释为一个新的变量名这个变量名包括类名和变量名并且以单下划线作为前缀例如 _MyClass__private_var。虽然这种方式可以在某些情况下访问私有变量但是强烈建议不要这样做因为这会使你的代码更难理解和维护。 Python私有方法
在 Python 中可以使用双下划线__来定义“私有”方法这些方法只能在类的内部访问。具体来说双下划线开头的方法名称会被 Python 解释器重命名为 _ClassName__my_private_method 的形式因此在外部无法直接调用。
例如
class MyClass:def __init__(self):self.__my_private_var 42def __my_private_method(self):print(This is a private method.)print(fThe value of my_private_var is {self.__my_private_var}.)obj MyClass()
# obj.__my_private_method() # 报错AttributeError: MyClass object has no attribute __my_private_method
obj._MyClass__my_private_method() # Output: This is a private method. The value of my_private_var is 42.
在这个示例中我们定义了一个 MyClass 类并在其中定义了一个“私有”方法 __my_private_method该方法只能在类的内部访问。然后我们创建了一个 MyClass 的对象并将其赋给变量 obj但如果尝试直接调用 obj.__my_private_method()会导致 AttributeError 错误因为该方法是“私有”的。相反我们可以通过 _MyClass__my_private_method() 方法来间接地调用该方法。
尽管在 Python 中可以通过特殊的名称来访问“私有”方法但这并不是一种好的编程风格。 附录
python/类和实例-访问限制https://www.codenong.com/cs106668667/
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解https://www.jb51.net/article/157112.htm