Python中私有变量与私有方法的定义及访问机制

小林子
小林子
发布时间:2026-10-13 | 4人浏览过
原创

本文详解Python中通过双下划线定义私有变量与私有方法的方法。由于Python没有private关键字,实例无法直接访问以__开头的成员。文章通过代码示例展示了直接访问报错的现象,并揭示了通过“实例名_类名__成员名”语法进行访问的原理,即Python的名称改写机制。

本文深入探讨Python类中私有变量的定义方式,通过具体的代码示例进行详细解析,为读者在学习或实际工作中提供有价值的参考。

Python私有变量与方法的定义原理

前言

在Java等语言中,定义私有变量通常使用private修饰符。然而,Python并未提供public或private这样的访问修饰关键字。那么,Python是如何实现私有变量定义的?

私有变量

在Python类中,若要在变量前添加两个下划线(__),即可将其定义为私有变量。此时,该类的实例对象无法直接通过常规方式引用该变量。具体实现见下方示例。


>>> class demo(object):
...   __a =1
...   b = 2
...
>>> d = demo()
>>> print(d.b)
>>> d.__a
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'demo' object has no attribute '__a'

私有成员的访问机制

上述示例显示,类demo的实例d无法直接调用变量__a。那么,实例d是否还有其他方式能够访问到__a?请参考下方的调用语法。


>>> d._demo__a
1

通过构造“实例名 + '_' + 类名 + 私有变量名”的格式,即可成功调用。请牢记这一特定的访问语法。

私有方法

私有方法的定义语法与私有变量完全一致,直接参考以下代码示例。


>>> class fun(object):
...   def __a(self):
...       print('聚焦学院AAA')
...   def b(self):
...       print('聚焦学院BBB')
...
>>> f = fun()
>>> f.b()
聚焦学院BBB
>>> f.__a()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'fun' object has no attribute '__a'
>>> f._fun__a()
聚焦学院AAA

由上述示例可知,类的实例调用私有方法时,其访问方式与调用私有变量的语法相同,均依赖于名称改写后的特定格式。

以上就是本文的全部内容,希望对读者的学习有所帮助,也欢迎大家继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表