• 技术文章 >Python技术 >Python基础教程

    python私有属性访问不到吗?

    2020-11-06 16:39:44原创1603
    之前我们讲过了访问限制的三种级别。分别是公有、私有和受保护。那么,私有属性真的不能访问吗?今天我们就来一起测试一下吧。

    要了解私有属性是否真的访问不到,需要从Python是如何实现私有属性入手。在Python中,会把双下划线的属性变为_ClassName__PropertyName的形式,用代码演示一下:

    class Foo(object):
        __bar = 123
     
     
    print(Foo._Foo__bar)  # 123

    运行一下可以知道,正常输出了__bar的值,但是不推荐这样去访问私有属性,因为不同的Python解释器对于私有属性的处理不一样。

    特例

    使用双下划线定义私有属性,有一种特殊情况,当属性后也有两个下划线的时候,这个属性会被Python解释器当做魔术方法,从而不做私有处理。

    class Foo(object):
        __bar__ = 123
     
     
    print(Foo.__bar__)  # 123

    上面代码输出了123,证明Python解释器并没有把__bar__当做私有属性。当定义私有属性时,需要注意名字最后最多只能有一个下划线。

    另一个特例

    假如定义的属性名就叫__呢?不妨直接试一下:

    class Foo(object):
        __ = 123
     
     
    print(Foo.__)  # 123

    可以发现名字叫__的属性也不会被认为是私有属性,名字是多个下划线的属性也不是私有属性(比如_______)。

    以上就是python私有属性访问的一些测试。更多Python学习推荐:PyThon学习网教学中心

    专题推荐:python私有属性
    上一篇:python中doctest如何放到独立文件? 下一篇:如何使用python中的返回函数?

    相关文章推荐

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网