欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python學習筆記之getattr和hasattr用法示例詳解

 更新時間:2025年08月12日 08:31:18   作者:一只野生的善逸  
在Python中,hasattr()、getattr()和setattr()是一組內(nèi)置函數(shù),用于對對象的屬性進行操作和查詢,這篇文章主要介紹了Python學習筆記之getattr和hasattr用法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

1.getattr用法詳解

1.1 基本作用

getattr(object, name[, default])
用于動態(tài)獲取對象的屬性值。

  • object:要操作的對象。
  • name:屬性名(字符串)。
  • default(可選):如果屬性不存在,返回的默認值(否則會拋異常)。

1.2 示例

class Person:
    name = "Alice"
    age = 20

person = Person()

print(getattr(person, "name"))         # 輸出: Alice
print(getattr(person, "age"))          # 輸出: 20
print(getattr(person, "gender", "女")) # 屬性不存在,輸出: 女

1.3 原理

  • getattr 實際上會調(diào)用對象的 __getattribute__ 方法。
  • 如果找不到屬性且提供了 default,則返回 default,否則拋出 AttributeError。

2.hasattr用法詳解

2.1 基本作用

hasattr(object, name)
用于判斷對象是否有某個屬性。

  • object:要檢查的對象。
  • name:屬性名(字符串)。

返回值:

  • 存在則返回 True,否則返回 False。

2.2 示例

class Person:
    name = "Alice"

person = Person()

print(hasattr(person, "name"))      # 輸出: True
print(hasattr(person, "age"))       # 輸出: False

2.3 原理

  • hasattr 實際上會嘗試用 getattr(object, name) 獲取屬性。
  • 如果沒有拋出 AttributeError,就返回 True,否則為 False。

3. 二者區(qū)別與聯(lián)系

3.1 聯(lián)系

  • 都用于動態(tài)操作對象屬性,底層都依賴于魔法方法 __getattribute__。

3.2 區(qū)別

  • getattr 用于取值,可以設置默認值。
  • hasattr 用于判斷屬性是否存在,不取值。

3.3 注意

?? 注意:hasattr 內(nèi)部實際上是 try-except 機制,屬性訪問可能觸發(fā)屬性的 getter 或 property 代碼塊!

4. 實用技巧與注意事項

4.1 實用技巧

  • getattr 動態(tài)讀取屬性,適合反射場景(如 ORM、插件、配置讀取等)。
  • hasattr 判斷屬性是否存在,避免代碼報錯。

4.2 注意事項

  • 如果屬性不存在且沒有傳遞 default,getattr 會直接報錯。
  • hasattr 訪問屬性時,帶有副作用時要小心(比如 property/自定義 __getattr__)。

5. 綜合示例

5.1 示例代碼

class Demo:
    def __init__(self):
        self.x = 10
    @property
    def y(self):
        print("訪問了 y")
        return 20

d = Demo()
print(hasattr(d, 'x'))  # True
print(hasattr(d, 'y'))  # True,同時會打印: 訪問了 y
print(getattr(d, 'y'))  # 訪問了 y,輸出: 20
print(getattr(d, 'z', '不存在'))  # 輸出: 不存在

6. 總結(jié)表

方法作用返回值不存在時行為
getattr獲取屬性值屬性值/默認值拋 AttributeError/返回默認
hasattr判斷屬性是否存在True/False返回 False

到此這篇關于Python學習筆記之getattr和hasattr用法的文章就介紹到這了,更多相關Python getattr和hasattr用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python中numpy?常用操作總結(jié)

    python中numpy?常用操作總結(jié)

    這篇文章主要介紹了python中numpy常用操作總結(jié),NumPy是Python語言的一個擴充程序庫,支持大量高維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學函數(shù)庫
    2022-09-09
  • Python3.7實現(xiàn)驗證碼登錄方式代碼實例

    Python3.7實現(xiàn)驗證碼登錄方式代碼實例

    這篇文章主要介紹了Python3.7實現(xiàn)驗證碼登錄方式代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python實現(xiàn)8個概率分布公式的方法詳解

    Python實現(xiàn)8個概率分布公式的方法詳解

    在本文中,我們將介紹一些常見的分布(均勻分布、高斯分布、對數(shù)正態(tài)分布等)并通過Python代碼進行可視化以直觀地顯示它們,感興趣的可以學習一下
    2022-05-05
  • Python3 列表list合并的4種方法

    Python3 列表list合并的4種方法

    這篇文章主要介紹了Python3 列表list合并的4種方法,需要的朋友可以參考下
    2021-04-04
  • 下載糗事百科的內(nèi)容_python版

    下載糗事百科的內(nèi)容_python版

    代碼是沒問題的,可以正常運行,但是希望做到以下2方面: 1、多線程下載 2、代碼分離度更高,跟面向?qū)ο?
    2008-12-12
  • python中sub-pub機制實現(xiàn)Redis的訂閱與發(fā)布

    python中sub-pub機制實現(xiàn)Redis的訂閱與發(fā)布

    本文主要介紹了python中sub-pub機制實現(xiàn)Redis的訂閱與發(fā)布,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • django認證系統(tǒng) Authentication使用詳解

    django認證系統(tǒng) Authentication使用詳解

    這篇文章主要介紹了django認證系統(tǒng) Authentication使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • django實現(xiàn)前后臺交互實例

    django實現(xiàn)前后臺交互實例

    本篇文章主要介紹了django實現(xiàn)前后臺交互實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 在Python中進行CSV文件的讀取與寫入操作

    在Python中進行CSV文件的讀取與寫入操作

    本文詳細介紹了如何在Python中使用csv模塊進行CSV文件的讀取和寫入,包括基本用法和高級功能,如DictWriter和DictReader,以及注意事項,需要的朋友可以參考下
    2025-03-03
  • 詳解Python類的定義與實例

    詳解Python類的定義與實例

    這篇文章給大家介紹Python類的定義與實例,下面是一個使用?NewSpaceGraph?類的示例,展示了如何實例化該類并調(diào)用其方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評論