您好,歡迎來到一站式眾包服務(wù)平臺-威客牛網(wǎng)!
當(dāng)前位置:威客牛首頁 > 知識百科 > IT軟件 > python getattr函數(shù)

python getattr函數(shù)

2025-05-16作者:網(wǎng)友投稿

`getattr()` 是 Python 中的一個內(nèi)置函數(shù),用于獲取對象的屬性值。如果指定的屬性存在,則返回該屬性的值;否則,引發(fā) `AttributeError` 異常。

基本語法如下:

```python

getattr(object, attribute_name)

```

這里 `object` 是你想查詢的實例對象,`attribute_name` 是你想要獲取的屬性名。注意這是一個字符串類型。這個函數(shù)嘗試在對象上獲取指定屬性的值。如果該屬性存在,則返回該屬性的值;如果不存在,會引發(fā) `AttributeError` 異常。你可以通過提供一個默認(rèn)值作為第三個參數(shù)來避免這種異常。如果屬性不存在,則返回默認(rèn)值而不是引發(fā)異常。例如:

```python

class MyClass:

def __init__(self):

self.my_attribute = "Hello World"

obj = MyClass()

print(getattr(obj, 'my_attribute')) # 輸出 "Hello World"

print(getattr(obj, 'non_existent_attribute', 'Default Value')) # 輸出 "Default Value",因為沒有名為 'non_existent_attribute' 的屬性

```

需要注意的是,當(dāng)你試圖訪問不存在的屬性時,如果傳遞的默認(rèn)值被設(shè)置為一個對象或一個可調(diào)用的函數(shù),它將根據(jù)參數(shù)和期望的行為被調(diào)用或返回。例如:

```python

class Default:

def __str__(self):

return 'default instance' # 在被調(diào)用時返回一個字符串

obj = Default() # obj 現(xiàn)在是一個默認(rèn)的實例對象。但是并不具備其他任何屬性。默認(rèn)構(gòu)造函數(shù)不會賦予任何額外的屬性給對象本身。因此我們試圖獲取一個不存在的屬性時就會拋出 AttributeError 異常。所以我們需要使用 getattr 函數(shù)來處理這種情況。我們調(diào)用 getattr 函數(shù)獲取一個不存在的屬性時,會返回默認(rèn)實例對象本身而不是拋出異常。因此我們可以這樣寫代碼:print(getattr(obj, 'non_existent_attribute', obj)),這樣的話當(dāng)我們嘗試訪問一個不存在的屬性時,我們?nèi)匀荒軌颢@得這個默認(rèn)的實例對象自身(或者基于需要做一些額外的處理)。這就是使用 getattr 函數(shù)的一個非常有用的地方。

免費查詢商標(biāo)注冊