內(nèi)置函數(shù)dir可用于列出某模塊中定義了哪些屬性(全局名稱空間)。完整的說明見help(dir)。
importb
dir(b)
輸出結(jié)果:
['__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','f','g','x','y','z']
可見,模塊的屬性中除了自己定義的屬性外,還有一些內(nèi)置的屬性,比如上面以__開頭和結(jié)尾的屬性。
如果dir()不給任何參數(shù),則輸出當(dāng)前環(huán)境下定義的名稱屬性:
>>>importb
>>>x=3
>>>aaa=333
>>>dir()
['__annotations__','__builtins__','__doc__','__loader__','__name__','__package__','__spec__','aaa','b','x']
每個(gè)屬性都對(duì)應(yīng)一個(gè)對(duì)象,例如x對(duì)應(yīng)的是int對(duì)象,b對(duì)應(yīng)的是module對(duì)象:
>>>type(x)
>>>type(b
既然是對(duì)象,那么它們都會(huì)有自己的屬性。例如:
>>>dir(x)
['__abs__','__add__','__and__','__bool__','__ceil__','__class__','__delattr__','__dir__','__divmod__','__doc__','__eq__','__float__','__floor__','__floordiv__','__format__','__ge__','__getattribute__','__getnewargs__','__gt__','__hash__','__index__','__init__','__init_subclass__','__int__','__invert__','__le__','__lshift__','__lt__','__mod__','__mul__','__ne__','__neg__','__new__','__or__','__pos__','__pow__','__radd__','__rand__','__rdivmod__','__reduce__','__reduce_ex__','__repr__','__rfloordiv__','__rlshift__','__rmod__','__rmul__','__ror__','__round__','__rpow__','__rrshift__','__rshift__','__rsub__','__rtruediv__','__rxor__','__setattr__','__sizeof__','__str__','__sub__','__subclasshook__','__truediv__','__trunc__','__xor__','bit_length','conjugate','denominator','from_bytes','imag','numerator','real','to_bytes']
所以,也可以直接dir某個(gè)模塊內(nèi)的屬性:
importb
dir(b.x)
dir(b.__name__)
dir()不會(huì)列出內(nèi)置的函數(shù)和變量,如果想要輸出內(nèi)置的函數(shù)和變量,可以去標(biāo)準(zhǔn)模塊builtins中查看,因?yàn)樗鼈兌x在此模塊中:
importbuiltins
dir(buildins)
除了內(nèi)置dir()函數(shù)可以獲取屬性列表(名稱空間),對(duì)象的__dict__屬性也可以獲取對(duì)象的屬性字典(名稱空間),它們的結(jié)果不完全一樣。詳細(xì)說明參見dir()和__dict__屬性區(qū)別。
總的來說,獲取對(duì)象M中一個(gè)自定義的屬性age,有以下幾種方法:
M.age
M.__dict__['age']
sys.modules['M'].age
getattr(M,'age')
以上內(nèi)容為大家介紹了Python查看模塊中的屬性,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。