• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 26, comments - 2, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Python內(nèi)置函數(shù)--dir

            Posted on 2009-10-16 20:32 小夜 閱讀(3119) 評(píng)論(0)  編輯 收藏 引用 所屬分類: [52] Python
            1.命令介紹
            最近學(xué)習(xí)并使用了一個(gè)python的內(nèi)置函數(shù)dir,首先help一下:
            >>> help(dir)
            Help on built
            -in function dir in module __builtin__:


            dir()
                dir([object]) 
            -> list of strings


                Return an alphabetized list of names comprising (some of) the attributes
                of the given object, 
            and of attributes reachable from it:


                No argument:  the names 
            in the current scope.
                Module object:  the module attributes.
                Type 
            or class object:  its attributes, and recursively the attributes of
                    its bases.
                Otherwise:  its attributes, its 
            class's attributes, and recursively the
                    attributes of its class's base classes.

            通過(guò)help,可以簡(jiǎn)單的認(rèn)為dir列出指定對(duì)象或類的屬性。
            2.實(shí)例
            下面是一個(gè)簡(jiǎn)單的測(cè)試:
             1class A:
             2    def a(self):
             3        pass
             4
             5
             6class A1(A):
             7    def a1(self):
             8        pass
             9
            10
            11if __name__ == '__main__':
            12    print("dir without arguments:", dir())
            13    print("dir class A:", dir(A))
            14    print("dir class A1:", dir(A1))
            15    a = A1()
            16    print("dir object a(A1):", dir(a))
            17    print("dir function a.a:", dir(a.a))
            18
            測(cè)試結(jié)果:
            dir without arguments: ['A''A1''__builtins__''__doc__''__file__''__name__''__package__']
            dir 
            class A: ['__class__''__delattr__''__dict__''__doc__''__eq__''__format__''__ge__''__getattribute__''__gt__''__hash__''__init__''__le__''__lt__''__module__''__ne__''__new__''__reduce__''__reduce_ex__''__repr__''__setattr__''__sizeof__''__str__''__subclasshook__''__weakref__''a']
            dir 
            class A1: ['__class__''__delattr__''__dict__''__doc__''__eq__''__format__''__ge__''__getattribute__''__gt__''__hash__''__init__''__le__''__lt__''__module__''__ne__''__new__''__reduce__''__reduce_ex__''__repr__''__setattr__''__sizeof__''__str__''__subclasshook__''__weakref__''a''a1']
            dir object a(A1): [
            '__class__''__delattr__''__dict__''__doc__''__eq__''__format__''__ge__''__getattribute__''__gt__''__hash__''__init__''__le__''__lt__''__module__''__ne__''__new__''__reduce__''__reduce_ex__''__repr__''__setattr__''__sizeof__''__str__''__subclasshook__''__weakref__''a''a1']
            dir function a.a: [
            '__call__''__class__''__delattr__''__doc__''__eq__''__format__''__func__''__ge__''__get__''__getattribute__''__gt__''__hash__''__init__''__le__''__lt__''__ne__''__new__''__reduce__''__reduce_ex__''__repr__''__self__''__setattr__''__sizeof__''__str__''__subclasshook__']
            3.使用dir查找module下的所有類
            最初使用這個(gè)函數(shù)的初衷,就是在一個(gè)module中查找實(shí)現(xiàn)的類名,通過(guò)該函數(shù)可以很容易的實(shí)現(xiàn)。
            比如把上面的測(cè)試程序保存為A.py,再建一個(gè)測(cè)試程序,內(nèi)容如下:
            1import A
            2
            3
            4if __name__ == '__main__':
            5    print("dir module A:", dir(A))
            6
            結(jié)果如下:
            dir module A: ['A''A1''__builtins__''__doc__''__file__''__name__''__package__']
            可以看出class A和A1都能夠找到。
            4.如何找到當(dāng)前模塊下的類
            這是一個(gè)煩惱較長(zhǎng)時(shí)間的一個(gè)問(wèn)題,也沒(méi)有搜到詳細(xì)的解決方法,下面是我的集中實(shí)現(xiàn)方法。
            4.1.方法一:在module下面直接調(diào)用
            比如在上面的A.py最下面添加一行,即可在后續(xù)的代碼中可以使用selfDir來(lái)查找當(dāng)前的module下的類,修改后的代碼如下:
             1class A:
             2    def a(self):
             3        pass
             4
             5class A1(A):
             6    def a1(self):
             7        pass
             8
             9curModuleDir=dir()  # get dir of current file(module) 
            10
            11if __name__ == '__main__':
            12    print("dir without arguments:", dir())
            13    print("dir class A:", dir(A))
            14    print("dir class A1:", dir(A1))
            15    a = A1()
            16    print("dir object a(A1):", dir(a))
            17    print("dir function a.a:", dir(a.a))
            18    print("dir current file:", curModuleDir)
            19

            4.2.方法二:import當(dāng)前module
            把當(dāng)前module和別的import一樣引用,代碼如下:
             1# A.py
             2import A as this # import current module
             3
             4class A:
             5    def a(self):
             6        pass
             7
             8class A1(A):
             9    def a1(self):
            10        pass
            11
            12if __name__ == '__main__':
            13    print("dir without arguments:", dir())
            14    print("dir class A:", dir(A))
            15    print("dir class A1:", dir(A1))
            16    a = A1()
            17    print("dir object a(A1):", dir(a))
            18    print("dir function a.a:", dir(a.a))
            19    print("dir current file:", dir(this))
            4.3.方法三:根據(jù)module名稱查找module,然后調(diào)用dir
            我們知道m(xù)odule下面有個(gè)屬性__name__顯示module名稱,怎么能夠根據(jù)module名稱來(lái)查找module對(duì)象呢?可以借助sys.modules。代碼如下:
            import sys

            class A:
                
            def a(self):
                    
            pass

            class A1(A):
                
            def a1(self):
                    
            pass

            if __name__ == '__main__':
                
            print("dir without arguments:", dir())
                
            print("dir class A:", dir(A))
                
            print("dir class A1:", dir(A1))
                a 
            = A1()
                
            print("dir object a(A1):", dir(a))
                
            print("dir function a.a:", dir(a.a))
                
            print("dir current file:", dir(sys.modules[__name__])) # 使用__name__獲取當(dāng)前module對(duì)象,然后使用對(duì)象獲得dir

            久久精品亚洲精品国产欧美| 久久久无码精品午夜| 色婷婷久久综合中文久久一本| 日本久久久久亚洲中字幕| 性欧美大战久久久久久久| 精品免费久久久久国产一区| 亚洲国产成人久久综合一 | 久久久久久久综合狠狠综合| 精品99久久aaa一级毛片| 久久线看观看精品香蕉国产| 精品久久人妻av中文字幕| 亚洲精品无码成人片久久| 久久中文字幕人妻丝袜| 久久久久久免费视频| 日韩人妻无码一区二区三区久久99| 久久久久国产精品麻豆AR影院| 99久久国产免费福利| 国产女人aaa级久久久级| 久久综合狠狠综合久久激情 | 狠狠精品干练久久久无码中文字幕| 久久99国产精品久久99果冻传媒| 91精品国产91久久综合| 狠狠色丁香久久综合婷婷| 亚洲国产精品久久久久| 国产精品丝袜久久久久久不卡| Xx性欧美肥妇精品久久久久久 | 久久天天躁狠狠躁夜夜不卡| 久久人妻少妇嫩草AV无码蜜桃| 欧美精品国产综合久久| 亚洲av日韩精品久久久久久a| 色欲av伊人久久大香线蕉影院| 精品久久久久久成人AV| 亚洲国产成人久久精品动漫| 日韩va亚洲va欧美va久久| 国产激情久久久久久熟女老人| 久久久精品2019免费观看| 亚洲国产精品热久久| 欧美亚洲国产精品久久| 国产精品女同久久久久电影院| 国产午夜福利精品久久| 精品伊人久久大线蕉色首页|