美文网首页
*私有化

*私有化

作者: 恶人未满 | 来源:发表于2017-07-29 10:34 被阅读0次

默认情况下,属性在Python 中都是“public”,类所在模块和导入了类所在模块的其他模块的代码都可以访问到。## 13.1 双下划线(__)#Python 为类元素(属性和方法)的私有性提供初步的形式。由双下划线开始的属性在运行时被“混淆”,所以直接访问是不允许的。#实际上,会在名字前面加上下划线和类名。比如上面示例中的:self.__num 属性为例,被“混淆”后,用于访问这个数据值的标识就变成了#self._NumStr__num。把类名加上后形成的新的“混淆”结果将可以防止在祖先类或子孙类中的同名冲突。#尽管这样做提供了某种层次上的私有化,但算法处于公共域中并且很容易被“击败”。#这更多的是一种对导入源代码无法获得的模块或对同一模块中的其他代码的保护机制.#这种名字混淆的另一个目的,是为了保护__XXX 变量不与父类名字空间相冲突。如果在类中有一#个__XXX 属性,它将不会被其子类中的__XXX 属性覆盖。(回忆一下,如果父类仅有一个XXX 属性,#子类也定义了这个,这时,子类的XXX 就是覆盖了父类的XXX,这就是为什么你必须使用PARENT.XXX#来调用父类的同名方法。) 使用__XXX,子类的代码就可以安全地使用__XXX,而不必担心它会影响#到父类中的__XXX。## 13.2 单下划线(_)#简单的模块级私有化只需要在属性名前使用一个单下划线字符。#这就防止模块的属性用“from mymodule import *”来加载。这是严格基于作用域的,所以这同样适合于函数

相关文章

  • npm和nvm和nrm

    npmnode package manage私有化npm包,sinopia私有化安装,npm私有化包管理等组件化开...

  • Python小白学习进行时---面向对象编程(三)(2018-6

    一、属性私有化 二、 三、 四、 一、属性私有化 属性的访问权限:公开、保护、私有。其中属性私有化指属性只能在定义...

  • iOS-面试题2

    1、OC 能实现私有化吗?答:方法的私有化,声明即外漏,不声明不外漏。( .m 可以实现私有化。)2、OC 中有...

  • day16 面向对象

    01-recode 02-私有化 1.属性和方法的访问权限 2.python的私有化 3.python私有化的原理...

  • 寻找特斯拉的2号人物,马斯克或许真的应该歇歇了!

    有关特斯拉私有化的消息已经引发了行业内的广泛关注。虽然对于特斯拉的私有化,外界褒贬不一,但是随着特斯拉私有化的动作...

  • day15_python_类和对象

    属性的私有化 python中并没有真正的私有化!python 的类中默认的属性和方法都是公开的 1.私有化a.类中...

  • java构造方法私有化

    理解构造方法私有化过程 - 1. 构造方式私有化 当构造方法私有化后,外部类无法对其进行实例化 - 2. 在类内部...

  • Python 类的私有化

    私有化 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *...

  • day-16类和对象

    私有化 python的私有化 python中在属性前面加两个下划线,就可以将属性或者方法私有化(只能两个下划线开头...

  • python私有化和property

    私有化xx: 公有变量_x: 单前置下划线,私有化属性或⽅法,from somemodule import *禁⽌...

网友评论

      本文标题:*私有化

      本文链接:https://www.haomeiwen.com/subject/tybqlxtx.html