python单下划线/双下划线总结

Python 用下划线作为变量前缀和后缀指定特殊变量

_xxx   :保护变量,意思是只有类对象和子类对象能够访问到这些变量(尽量避免在类外部直接修改)

__xxx__ :系统定义名字

__xxx  :类中的私有变量名

核心风格:避免用下划线作为变量名的开始。


因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。

一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用(是可以使用的,但是一般不用)。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。


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

“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;

以双下划线开头的(__foo)代表类的私有成员;

以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。


现在我们来总结下所有的系统定义属性和方法, 先来看下保留属性:

>>> Class1.__doc__ # 类型帮助信息 'Class1 Doc.' 

>>> Class1.__name__ # 类型名称 'Class1' 

>>> Class1.__module__ # 类型所在模块 '__main__' 

>>> Class1.__bases__ # 类型所继承的基类 (<type 'object'>,) 

>>> Class1.__dict__ # 类型字典,存储所有类型成员信息。 <dictproxy object at 0x00D3AD70> 

>>> Class1().__class__ # 类型 <class '__main__.Class1'> 

>>> Class1().__module__ # 实例类型所在模块 '__main__' 

>>> Class1().__dict__ # 对象字典,存储所有实例成员信息。 {'i': 1234}


  使用以下函数的方式来访问属性:  

  getattr(obj, name[, default]) : 访问对象的属性。
  hasattr(obj,name) : 检查是否存在一个属性。
  setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
  delattr(obj, name) : 删除属性。
  hasattr(emp1, 'age')    # 如果存在 'age' 属性返回 True。
  getattr(emp1, 'age')    # 返回 'age' 属性的值
  setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8
  delattr(empl, 'age')    # 删除属性 'age'

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值