python单下划线和双下线的区别

版权声明:码字不易,且看且珍惜!交流:Wechat: suihailiang0816 QQ: 931762054 转载并修改内容请与我联系 https://blog.csdn.net/weixin_41010198/article/details/89414198

一、简单说明

在学习Python的时候,会不理解为什么在方法(method)前面会加好几个下划线,有时甚至两边都会加。在C++的类中会定义中一些方法或属性会被定义成public、protected、private,而在Python中不是通过关键字进行定义,而是通过下划线和双下划线进行定义,同样实现具有 private 和 protected 类似的访问权限作用,下面我们具体分析。

Python主要存在四种命名:
(1)object #公用方法
(2)__object__ #内建方法,用户不要这样定义
(3)__object #全私有,全保护(private)
(4)_object #半保护(protected)

核心风格:避免用下划线作为变量名的开始。
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,如类的gouzao

二、举例说明

1、单下划线开头开头(protected变量)

单下划线开头的变量
“单下划线”开始的变量叫做保护变量,意思是只有类对象和子类对象能访问到这些变量

2、双下划线开头(private变量)

双下划线开头的变量
“双下划线”开始的变量叫做私有变量,意思是只有类本身能够访问达到这些变量,连子类对象也不能访问。

但是类的对象或者类的子对象想访问这些私有变量也是可以的,需要改变访问的的方式(但是一般不主张)
对象访问私有方法或属性:

对象名._类名__PrivateMethod()

class Foo():
  def __init__():
    ...

  def public_method():
    print 'This is public method'

  def __fullprivate_method():
    print 'This is fullprivate_method'

  def _halfprivate_method():
    print 'This is halfprivate_method'

  f = Foo()
  f.public_method() # OK
  f.__fullprivate_method() # Error occur
  f._halfprivate_method() # OK
  f._Foo__fullprivate_method() # OK 

猜你喜欢

转载自blog.csdn.net/weixin_41010198/article/details/89414198