python变量私有化

c++/c#中 私有化

c++/c#中类中的变量可通过关键字 public,protected,private等控制内部类的各项权限

python私有化

python中用下划线控制变量权限
①不加下划线,如(count): 表示公有变量,可以在类内部和外部访问
②前置单下划线(如count):表示私有化属性和方法,应该被视为API中非公开的部分(不管是函数、方法还是数据成员),那么以“”开头的名称都不会被导入,除非模块或包中的“all”列表显式地包含了它们
③前置双下划线(如 _count):Python中的这种用法是为了避免与子类定义的名称冲突,无法在类外部访问(原因:name mangling名字重整),单下划线是Python程序员使用类时的约定,表明程序员不希望类的用户直接访问属性。仅仅是一种约定!实际上,实例.变量,可以被访问
④名称前后的双下划线(如init):表示Python中特殊的方法名,"魔法函数"

>>> class A(object): 
... def _internal_use(self): 
... pass 
... def __method_name(self): 
... pass 
... 
>>> dir(A()) 
['_A__method_name', ..., '_internal_use']
#名字重整 _method_name 变成 "_类名_method_name"
#'_internal_use未变

如果创建A的一个子类B,那么你将不能轻易地覆写A中的方法“__method_name”。

>>> class B(A): 
... def __method_name(self): 
... pass 
... 
>>> dir(B()) 
['_A__method_name', '_B__method_name', ..., '_internal_use']
1
2
3
4
5
6
>>> class B(A): 
... def __method_name(self): 
... pass 
... 
>>> dir(B()) 
['_A__method_name', '_B__method_name', ..., '_internal_use']
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,638评论 1 118
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 1,606评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类...
    绩重KF阅读 3,999评论 0 13
  • python 中变量的命名规范 模块名: 小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样...
    步_尘阅读 2,542评论 0 0