教程集 www.jiaochengji.com
教程集 >  Python编程  >  Python入门  >  正文 python私有属性访问不到吗?

python私有属性访问不到吗?

发布时间:2021-01-17   编辑:jiaochengji.com
教程集为您提供python私有属性访问不到吗?等资源,欢迎您收藏本站,我们将为您提供最新的python私有属性访问不到吗?资源

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

要了解私有属性是否真的访问不到,需要从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学习推荐:JQ教程网Python大全

您可能感兴趣的文章:
python怎么调用私有属性
python私有属性访问不到吗?
Python类属性和实例属性是什么
一文读懂Python中的类
python如何访问私有方法
PHP中__unset()方法详解
Python中的属性和特性是什么
Python中property特性属性是什么
python中下划线怎么打
Python对象属性的set和get方法

[关闭]
~ ~