python中以下划线开头的变量名的特点

 

  • _xx:前置单下划线,私有化属性或方法,一般来讲,变量名_xx被看作是“私有 的”,在模块或类外不可以使用。当变量是私有的时候,用_xx 来表示变量是很好的习惯。类对象和子类可以访问,这并不能完全做到真正的私有,只是约定俗成的而已,这样写表示不希望这个变量在外部被直接调用
  • __xx:前置双下划线,私有化属性或方法,无法在外部直接访问(名字重整所以访问不到,只能是允许这个类本身进行访问了。连子类也不可以)
  • __xx__:前后双下划线,系统定义名字(这就是在python中强大的魔法方法),因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。
  • xx_:后置单下划线,用于避免与Python关键词的冲突
  • 如以下例子所示,我在test类中定义了x,_x和 __x三个属性,并创建了test的类对象t,对这三个属性进行访问,__x不能被访问到
  • 1 class test(object):
    2  def __init__(self):
    3  self.x = 10
    4  self._x = 20
    5  self.__x = 30
    6 t = test()
    7 print(t.x) # 10
    8 print(t._x) # 20
    9 # print(t.__x) # AttributeError: 'test' object has no attribute '__x'

     

posted @ 2020-06-17 20:13  slayer~  阅读(3270)  评论(0编辑  收藏  举报