Python中的dir()函數是Python自帶的函數,可以快速獲取對象的所有屬性和方法。使用dir()函數有助於了解一個對象所包含的內容,是Python中常用的一個函數。
一、dir()函數介紹
dir()函數用於列出一個對象的所有屬性和方法,返回的是一個列表。該函數可以用於任何對象,包括模塊、類、實例等。
>>> dir(list)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
在上面的代碼中,我們使用dir()函數列出了列表對象的所有屬性和方法,並列印出來。
需要注意的是,dir()函數返回的列表中包括一些Python內置的屬性和方法,以雙下劃線開頭和結尾的是Python內置屬性,例如「__init__」就是Python內置的構造函數。
二、dir()函數的應用
1. 使用dir()函數了解對象
使用dir()函數可以很方便地了解一個對象,包括對象所包含的屬性和方法。例如,我們可以使用dir()函數來了解列表對象的一些方法:
mylist = [1,2,3]
print(dir(mylist))
上面代碼會輸出一個包含列表對象所有方法和屬性的列表:
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
使用dir()函數,我們可以快速了解列表對象中的所有屬性和方法。
2. 動態調用對象方法
除了了解對象的屬性和方法,dir()函數還可以用於動態調用對象方法,例如:
class MyClass:
def mymethod(self):
print("Hello world!")
myobj = MyClass()
getattr(myobj, 'mymethod')()
上面代碼定義了一個MyClass類,其中包含一個mymethod()方法。我們通過使用getattr()函數來獲得該方法,並調用該方法來輸出字元串「Hello world!」。
3. 篩選出指定類型的方法和屬性
在一些情況下,我們希望篩選出指定類型的方法和屬性。例如,我們希望篩選出所有的函數屬性,可以使用以下代碼:
def myfunc():
pass
class MyClass:
def mymethod(self):
pass
myvar = 1
print([item for item in dir(MyClass) if callable(getattr(MyClass, item))])
print([item for item in dir(myfunc) if callable(getattr(myfunc, item))])
上面代碼輸出MyClass定義的所有函數屬性和myfunc定義的所有函數屬性:
['mymethod']
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
使用上面的代碼,我們可以篩選出指定類型的屬性和方法,並且對它們進行操作。
三、總結
dir()函數可以幫助我們快速了解一個對象的所有屬性和方法,包括Python的內置屬性和方法。我們可以用dir()函數來動態調用對象方法,篩選出指定類型的方法和屬性等等。在實際開發中,dir()函數是非常有用的一個函數,希望本文能對讀者有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/184761.html