立即注册 登录
About云-梭伦科技 返回首页

13810375469的个人空间 https://aboutyun.com/?55867 [收藏] [复制] [分享] [RSS]

日志

python中的下划线

已有 709 次阅读2017-6-5 13:17 | python

原文:https://foofish.net/python.html
问题1:下划线变量
单下划线开头的变量,Pyhthon规定为内部变量(私有变量),from M import * 时,这种变量并不会导入进来
双下划线开头的变量,它在模块中还是当作单下划线看待,但出现在类中作为类属性就不一样了,在运行时该类属性会被“混淆",不能直接访问,需要在该变量前加上下划线和类名才能访问。
例如
class Foo(object): boo = 40 _boo = 50 __boo = 60 # _Foo__boo def __init__(self): self.__booo = 70 def __test(self): #_Foo__test print "__test" if __name__ == '__main__': print Foo.boo print Foo._boo print Foo._Foo__boo foo = Foo() print foo._Foo__booo foo._Foo__test()

这样可以防止与父类或子类中同名的__xxx属性发生冲突。--------没看懂
开始和结尾都有的双下划线的变量:此类变量属于魔法对象,如:initfile,你永远不要自己也发明个出来

问二:all__all__对象是装有字符串的列表对象,他会覆盖 from import * 的默认行为:如
#foo.py __all__ = ['bar', 'baz'] waz = 5 bar = 10 def baz(): return 'baz' from foo import * print bar print baz # 异常 print waz

在foo.py里面定义了__all__后,import * 就会按照 __all__定义的内容导入,所以这里 print waz就抛异常了,因为它不在 __all__里面。为外,你可以把下划线开头的变量的字符串形式加入到__all__中,这样 import * 也能看到这些变量。



全部作者的其他最新日志

评论 (0 个评论)

关闭

推荐上一条 /2 下一条