码迷,mamicode.com
首页 > 编程语言 > 详细

python私有方法和私有属性属性理解

时间:2017-11-05 14:30:58      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:系统   专用   code   __new__   私有   ipy   私有化   定义   没有   

私有属性、方法——Python并没有真正的私有化支持,但可用下划线得到伪私有
尽量避免定义以下划线开头的变量
   (1)_xxx      "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问;不能用‘from module import *‘导入
   (2)__xxx    类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。)," 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
    (3)__xxx__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__() 代表类的构造函数。

In [6]: class Dog():
   ...:     def __sit_down(self):
   ...:         print(坐下了)
   ...:     def sit_down(self,host_name):
   ...:         if host_name==主人:
   ...:             self.__sit_down()

In [7]: w=Dog()

In [8]: w.sit_down(主人)
坐下了

In [9]: w.sit_down()

In [10]: w.__sit_down()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-16df8360e9bf> in <module>()
----> 1 w.__sit_down()

AttributeError: Dog object has no attribute __sit_down

In [13]: w._Dog__sit_down()
坐下了

python实例可以直接调用Python的公有方法;私有方法和属性在外部不可以直接用属性或方法名调用,内部将私有方法和属性在前面增加了  "_类名"

                           
In [14]: dir(Dog)          
Out[14]:                   
[‘_Dog__sit_down‘,         
 __class__,              
 __delattr__,            
 __dict__,               
 __dir__,                
 __doc__,                
 __eq__,                 
 __format__,             
 __ge__,                 
 __getattribute__,       
 __gt__,                 
 __hash__,               
 __init__,               
 __init_subclass__,      
 __le__,                 
 __lt__,                 
 __module__,             
 __ne__,                 
 __new__,                
 __reduce__,             
 __reduce_ex__,          
 __repr__,               
 __setattr__,            
 __sizeof__,             
 __str__,                
 __subclasshook__,       
 __weakref__,            
 ‘sit_down‘]               

 

python私有方法和私有属性属性理解

标签:系统   专用   code   __new__   私有   ipy   私有化   定义   没有   

原文地址:http://www.cnblogs.com/maxiaohei/p/7787256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!