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

python getattr函數(shù)

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

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

基本語法如下:

```python

getattr(object, attribute_name)

```

這里 `object` 是你想查詢的實(shí)例對(duì)象,`attribute_name` 是你想要獲取的屬性名。注意這是一個(gè)字符串類型。這個(gè)函數(shù)嘗試在對(duì)象上獲取指定屬性的值。如果該屬性存在,則返回該屬性的值;如果不存在,會(huì)引發(fā) `AttributeError` 異常。你可以通過提供一個(gè)默認(rèn)值作為第三個(gè)參數(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",因?yàn)闆]有名為 'non_existent_attribute' 的屬性

```

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

```python

class Default:

def __str__(self):

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

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

免費(fèi)查詢商標(biāo)注冊(cè)