python中的_all_用法
python没有像java,c++等的看见性控制,如java的private、protect、public。python只能够靠约定来对控制可见性。python分为包外和包内可见效。包外的可见效是通过在包里面的__init.py__里面设置__all__来控制包内的对象和方法等对包外的可见性,如:如果设置了__all__,就相当于一个白名单,如果这个包内的类或方法不在__all__里面,就相当于没有上白名单,外面的包就不能正常使用这些没有上白名单的方法和类。如果没有设置__all__,那么外面可以通过包内的约定来显示可见性。python通过private对应两个下划线__,protected对应一个下划线_,public 对应没有下划线,来约定类似于java的可见性控制。
以下是__init.py和__all__的关系和位置:
from __future__ import absolute_import
from .ABuPickBase import AbuPickTimeWorkBase, AbuPickStockWorkBase
from .ABuPickStockMaster import AbuPickStockMaster
from .ABuPickStockWorker import AbuPickStockWorker
from .ABuPickTimeWorker import AbuPickTimeWorker
from .ABuPickTimeMaster import AbuPickTimeMaster
from . import ABuPickStockExecute
from . import ABuPickTimeExecute
# noinspection all
from . import ABuAlpha as alpha
__all__ = [
'AbuPickTimeWorkBase',
'AbuPickStockWorkBase',
'AbuPickStockMaster',
'AbuPickStockWorker',
'AbuPickTimeWorker',
'AbuPickTimeMaster',
'ABuPickStockExecute',
'ABuPickTimeExecute',
'alpha'
]