Python 私有变量和私有方法介绍

这篇具有很好参考价值的文章主要介绍了Python 私有变量和私有方法介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 = 42

    def get_private_var(self):
        return self.__private_var

my_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 = 42

    def __my_private_method(self):
        print("This is a private method.")
        print(f"The 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文章来源地址https://www.toymoban.com/news/detail-480597.html

到了这里,关于Python 私有变量和私有方法介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python从0到100(三):Python中的变量介绍

    前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能

    2024年03月13日
    浏览(36)
  • Python教程(9)——Python变量类型列表list的用法介绍

    在Python中,列表(list)是一种有序、可变的数据结构,用于存储多个元素。列表可以包含不同类型的元素,包括整数、浮点数、字符串等。实际上列表有点类似C++语言中的数组,但仅仅只是类似,和数组还是有点不一样的。列表非常适合利用顺序和位置定位某一元素,尤其是

    2024年02月13日
    浏览(43)
  • python读取.mat文件,python将变量存为.mat文件详细介绍

             在进行数据处理的过程中,经常会用到Matlab和python两种工具,.mat文件是Matlab数据存储的标准数据格式,通过创建一个.mat文件详细介绍两种工具之间的数据读取和存储。 例如:创建一个数组A,存到指定文件夹下 变量A:  通过save将变量A进行保存: save(\\\'具体路径\\\',\\\'变

    2024年02月07日
    浏览(41)
  • 改变C++中私有变量成员的值

    1、没有引用的情况: 实际上p.getQueue()返回的是一个副本,并不是返回成员变量 输出如下:   2、采用引用: 输出如下:  

    2024年02月12日
    浏览(44)
  • Python:环境变量配置方法 详细教程

     最近有人问我如何配置python环境变量,这篇文章就向大家介绍python环境变量配置方法。 python环境变量的配置方法:首先鼠标右键此电脑,选择属性;然后点击高级系统设置,点击环境变量;接着点击path进行编辑,在path中添加上python的安装路径;最后点击确定。 本教程操作

    2024年02月13日
    浏览(46)
  • Python中的静态类变量和方法

    如何在 Python 中创建静态类变量或方法? huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。 在类定义内但不在方法内声明的变量是类或静态变量: 正如@millerdev 指出的那样,这会创建一个类级 i 变量,但这与任何实例级 i 变量不同,

    2024年02月06日
    浏览(78)
  • VS依赖注入(DI)构造函数自动生成局部私有变量

    依赖注入(DI)在开发中既是常见的也是必需的技术。它帮助我们优化了代码结构,使得应用更加灵活、易于扩展,同时也降低了各个模块之间的耦合度,更容易进行单元测试,提高了编码效率和质量。我们经常会先定义局部变量,再在构造函数中使用,每次都要这样去编写耗时

    2024年02月11日
    浏览(46)
  • 在Python中将字典转为成员变量的方法

    当我们在Python中写一个class时,如果有一部分的成员变量需要用一个字典来命名和赋值,此时应该如何操作呢?这个场景最常见于从一个文件(比如json、npz之类的文件)中读取字典变量到内存当中,再赋值给一个类的成员变量,或者已经生成的实例变量。 在python中直接支持了

    2024年04月28日
    浏览(31)
  • 如何在C++中将int类型的变量转换为string类型呢?今天我们就来介绍两种方法。

    如何在C++中将int类型的变量转换为string类型呢?今天我们就来介绍两种方法。 第一种方法是使用C++11标准引入的std::to_string()函数。这个函数可以将数字类型的变量转换为对应的字符串类型。下面是一个使用示例: 上面的代码将整型变量num转换为字符串类型,并输出到控制台

    2024年02月08日
    浏览(59)
  • python经典百题之static定义静态变量的方法

    在Python中,“static”(静态变量)的概念通常与类的属性相关联。虽然Python没有严格的静态变量概念,但可以通过类属性或模块级变量来模拟静态变量的功能。我们将探讨三种不同的方法来模拟静态变量,以及各种方法的解题思路、优缺点。 我们将介绍三种模拟静态变量的方

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包