網頁

搜尋此網誌

2013年5月14日 星期二

Visualization of Python’s built-in exceptions 視覺化Python內建例外

修改前一篇的程式碼,可以得到內建例外(Built-in Exceptions)的繼承關係。

if __name__ == "__main__":
    import types
    import gv
    g = gv.digraph('exceptions')
    gv.setv(g, 'overlap', 'false')
    gv.setv(g, 'splines', 'true')
    gv.setv(g, 'pad', '1')
    for item in dir(__builtins__):
        attr = getattr(__builtins__, item)
        if type(attr) is types.TypeType and \
           issubclass(attr, BaseException):
            tail = None
            head = None            
            for i in attr.__mro__:
                nodename = i.__name__
                tail = gv.findnode(g, nodename)
                if not tail:
                    tail = gv.node(g, nodename)
                if head and not gv.findedge(tail, head):
                    gv.edge(tail, head)
                head = tail
    
    gv.layout(g, 'neato')
    gv.render(g, 'png', 'built-in_exceptions.png')

視覺化結果如下圖所示:(大圖連結)

由圖上可以看到,例外物件的基底類別是BaseException,而Exception繼承BaseException,提供給所有內建的、系統的與使用者定義的例外去繼承Exception,這裡可以看到Python例外分成兩大類,一個是StandardError,另一個是Warning

###

沒有留言:

張貼留言

熱門文章