python私有化和几个下划线问题

python中的私有变量和私有方法仍然是可以访问的;访问方法如下:
私有变量:实例._类名__变量名

私有方法:实例._类名__方法名()


Python并没有真正的私有化支持,但可用下划线得到伪私有。   尽量避免定义以下划线开头的变量!
(1)_xxx      "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,
需通过类提供的接口进行访问;不能用'from module import *'导入


(2)__xxx    类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。),
双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。


(3)__xxx__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。



                                                                      转载处:http://blog.csdn.net/sxingming/article/details/52875125

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的私有化是通过使用双下划线(__)作为前缀来实现的。当在类定义中使用双下划线作为前缀时,Python会自动将该属性或方法命名重整为私有的。 私有化的意思是该属性或方法只能在类的内部访问,无法在类的外部直接访问。但是,Python并没有严格限制私有属性和方法的访问,而是通过一种名为"名称改写(name mangling)"的方式对其进行了变形。 具体来说,Python会将以双下划线开头的属性或方法名重构为"_ClassName__attribute"或"_ClassName__method"的形式。这种变形过程在编译阶段完成,并且只影响以双下划线开头的属性和方法。 这样一来,在类的内部可以直接访问和使用私有属性和方法,但在类的外部则无法通过正常的方式访问。如果你非常需要在类的外部访问私有属性或方法,可以通过使用变形后的名称进行访问,但强烈不建议这样做,因为它违背了封装的原则。 下面是一个简单的例子,说明了如何在Python中进行私有化: ``` class MyClass: def __init__(self): self.__private_attribute = 42 def __private_method(self): return "This is a private method." my_object = MyClass() # 在类的内部访问私有属性和方法 print(my_object._MyClass__private_attribute) # 输出: 42 print(my_object._MyClass__private_method()) # 输出: This is a private method. # 在类的外部尝试访问私有属性和方法 print(my_object.__private_attribute) # 报错: AttributeError print(my_object.__private_method()) # 报错: AttributeError ``` 请注意,虽然Python不会严格限制私有属性和方法的访问,但建议遵守封装的原则,尽量不要直接访问私有成员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值