最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python打印對象所有屬性和值的方法小結(jié)

 更新時間:2025年06月17日 11:18:23   作者:1010n111  
在Python開發(fā)過程中,調(diào)試代碼時經(jīng)常需要查看對象的當(dāng)前狀態(tài),也就是對象的所有屬性和對應(yīng)的值,然而,Python并沒有像PHP的print_r那樣直接提供一個內(nèi)置函數(shù)來實現(xiàn)這一功能,不過,Python提供了一些工具和方法,可以組合使用來達(dá)到打印對象屬性和值的目的,下面小編給大家講講

Python中打印對象所有屬性和值的方法

實現(xiàn)步驟

1. 使用vars()和pprint()

vars()函數(shù)返回對象的__dict__屬性,pprint()可以對數(shù)據(jù)進(jìn)行美觀的打印。

from pprint import pprint

class MyClass:
    def __init__(self):
        self.name = 'John'
        self.age = 30

obj = MyClass()
pprint(vars(obj))

2. 使用dir()和getattr()

dir()函數(shù)返回對象的所有屬性名,getattr()函數(shù)根據(jù)屬性名獲取屬性值。

def dump(obj):
    for attr in dir(obj):
        print("obj.%s = %r" % (attr, getattr(obj, attr)))

class MyClass:
    def __init__(self):
        self.name = 'John'
        self.age = 30

obj = MyClass()
dump(obj)

3. 自定義函數(shù)過濾屬性

可以編寫自定義函數(shù),過濾掉一些不需要的屬性,如私有屬性和方法。

from pprint import pprint
from inspect import getmembers
from types import FunctionType

def attributes(obj):
    disallowed_names = {
        name for name, value in getmembers(type(obj)) 
        if isinstance(value, FunctionType)
    }
    return {
        name: getattr(obj, name) for name in dir(obj) 
        if name[0] != '_' and name not in disallowed_names and hasattr(obj, name)
    }

def print_attributes(obj):
    pprint(attributes(obj))

class MyClass:
    def __init__(self):
        self.name = 'John'
        self.age = 30

    def say_hello(self):
        pass

obj = MyClass()
print_attributes(obj)

核心代碼

綜合方法示例

from pprint import pprint
from inspect import getmembers
from types import FunctionType

class MyClass:
    def __init__(self):
        self.name = 'John'
        self.age = 30

    def say_hello(self):
        pass

def attributes(obj):
    disallowed_names = {
        name for name, value in getmembers(type(obj)) 
        if isinstance(value, FunctionType)
    }
    return {
        name: getattr(obj, name) for name in dir(obj) 
        if name[0] != '_' and name not in disallowed_names and hasattr(obj, name)
    }

obj = MyClass()
pprint(attributes(obj))

最佳實踐

  • 選擇合適的方法:根據(jù)對象的類型和需求選擇合適的方法。如果對象有__dict__屬性,vars()和pprint()組合是一個簡單有效的方法;如果需要獲取所有屬性,包括沒有__dict__屬性的對象,可以使用dir()和getattr()。
  • 過濾不必要的屬性:在打印屬性時,過濾掉一些不需要的屬性,如私有屬性和方法,使輸出更簡潔。
  • 使用第三方庫:如果需要更復(fù)雜的功能,如遞歸打印嵌套對象,可以考慮使用第三方庫,如jsonpickle、ppretty等。

常見問題

1. vars()函數(shù)報錯

vars()函數(shù)要求對象有__dict__屬性,如果對象沒有該屬性,會拋出TypeError異常。例如,set對象就沒有__dict__屬性。

s = {1, 2, 3}
try:
    pprint(vars(s))
except TypeError as e:
    print(f"Error: {e}")

2. dir()函數(shù)返回過多屬性

dir()函數(shù)會返回對象的所有屬性,包括內(nèi)置屬性和方法,可能會導(dǎo)致輸出過多不必要的信息??梢酝ㄟ^自定義函數(shù)過濾這些屬性。

3. 遞歸打印問題

如果對象包含嵌套對象,直接打印可能無法顯示嵌套對象的詳細(xì)信息??梢允褂眠f歸函數(shù)或第三方庫來實現(xiàn)遞歸打印。

以上就是Python打印對象所有屬性和值的方法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python打印對象所有屬性和值的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • django中嵌套的try-except實例

    django中嵌套的try-except實例

    這篇文章主要介紹了django中嵌套的try-except實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 解決tensorflow讀取本地MNITS_data失敗的原因

    解決tensorflow讀取本地MNITS_data失敗的原因

    這篇文章主要介紹了解決tensorflow讀取本地MNITS_data失敗的原因,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用pip通過命令設(shè)置國內(nèi)鏡像源的三種方式

    Python使用pip通過命令設(shè)置國內(nèi)鏡像源的三種方式

    在使用?pip?安裝?Python?模塊時,默認(rèn)的國外鏡像源可能會導(dǎo)致下載速度緩慢甚至超時,為了解決這個問題,可以使用國內(nèi)的鏡像源來加速下載,以下是常用的國內(nèi)鏡像源以及臨時和永久的配置方法,需要的朋友可以參考下
    2025-08-08
  • python腳本使用阿里云slb對惡意攻擊進(jìn)行封堵的實現(xiàn)

    python腳本使用阿里云slb對惡意攻擊進(jìn)行封堵的實現(xiàn)

    這篇文章主要介紹了python腳本使用阿里云slb對惡意攻擊進(jìn)行封堵的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python基于hashlib模塊的文件MD5一致性加密驗證示例

    Python基于hashlib模塊的文件MD5一致性加密驗證示例

    這篇文章主要介紹了Python基于hashlib模塊的文件MD5一致性加密驗證,涉及Python使用hashlib模塊進(jìn)行字符串與文件的MD5加密驗證操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-02-02
  • Python自動巡檢H3C交換機(jī)實現(xiàn)過程解析

    Python自動巡檢H3C交換機(jī)實現(xiàn)過程解析

    這篇文章主要介紹了Python自動巡檢H3C交換機(jī)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(Windows和linux)

    Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(Windows和linux)

    本文詳細(xì)介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下
    2024-09-09
  • 詳解基于python的圖像Gabor變換及特征提取

    詳解基于python的圖像Gabor變換及特征提取

    這篇文章主要介紹了基于python的圖像Gabor變換及特征提取,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-10-10
  • 深人了解Python上下文管理器

    深人了解Python上下文管理器

    這篇文章主要為大家介紹了Python上下文管理器,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-12-12
  • Python?OpenCV實現(xiàn)圖像傅里葉變換

    Python?OpenCV實現(xiàn)圖像傅里葉變換

    傅里葉變換,也稱作傅立葉變換,表示能將滿足一定條件的某個函數(shù)表示成三角函數(shù)(正弦和/或余弦函數(shù))或者它們的積分的線性組合。本文將介紹如何通過OpenCV實現(xiàn)圖像的傅里葉變換,需要的可以參考一下
    2022-01-01

最新評論

南安市| 锦州市| 祁连县| 大安市| 星座| 射洪县| 瑞昌市| 贵定县| 灌南县| 正阳县| 榆林市| 福建省| 晋江市| 嵊州市| 乌审旗| 穆棱市| 甘南县| 密山市| 彝良县| 阳泉市| 道孚县| 天全县| 古田县| 增城市| 措美县| 武冈市| 张家界市| 扎鲁特旗| 靖州| 洪洞县| 临潭县| 滨州市| 阿坝县| 辉南县| 绥宁县| 石屏县| 勐海县| 贺州市| 凌源市| 金堂县| 峡江县|