python 钩子函数详解

发布时间:2019-09-05 07:07:48编辑:auto阅读(2062)

    1.with 与 __enter__ ,__exit__

        with obj:
            expressment
        #进入with块时调用 obj.__enter__()
        #退出with块时调用 obj.__exit__()

    2. class 与__new__,__init__,__del__

    创建对象实例时调用__new__(self,...),基本不用。。。
    专门用于实例初始化 __init__(self,...)

    析构函数__del__,但并不保证在对象存在于解释器退出后的情况下,仍旧能被执行(因为解释器已经退出了)

    这三个是python为数不多的不那么王道的钩子

    [参考这里]

    http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue6/a-guide-to-pythons-magic-methods.html

    3.__all___

    作为一个高级功能,可以在init.py文件中使用all列表来定义目录以form *语句形式导入时,需要
    导出什么。all列表是指出当包(目录—)名称使用from *的时候,应该导入的子模块名称清单。

    eg:
    /usr/local/lib/python2.7/sqlite3/__init__.py
    from dbapi2 import *
    /usr/local/lib/python2.7/site-packages/mod_python/__init__.py
    __all__ = ["apache", "cgihandler", "psp",
               "publisher", "util", "python22"]
    

    本条摘自

    http://ipseek.blog.51cto.com/1041109/795782

关键字