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

Python反射操作對象屬性方法詳解

 更新時間:2023年08月08日 10:09:02   作者:灰勒塔德  
這篇文章主要介紹了Python反射操作對象屬性方法詳解,在Python面對對象中,通過字符串的形式去操作對象的屬性方法就稱之為反射(在Python中一切事物都是可以為對象),需要的朋友可以參考下

前言:

  眾所周知,每一個實例化對象都是有實例化屬性或者方法的,之前我們對實例化對象進行屬性方法查詢、刪除或者添加都是直接去通過對象名.屬性 去操作的

所以今天我來講其他方法去操作實例化對象的屬性方法,看正文:

反射

在Python面對對象中,通過字符串的形式去操作對象的屬性方法就稱之為反射(在Python中一切事物都是可以為對象)

對象反射這里提供了以下幾個內置字符串函數:

  • getattr 獲取指定對象的屬性以及方法
  • setattr 設置對象屬性
  • hasattr 判斷對象是否有這個屬性以及方法
  • delattr 刪除對象屬性

下面進行一一細講

1.getattr() 函數

 格式:

變量名 = getattr(對象, 對象屬性, 默認值)

作用:

獲取指定對象的屬性以及方法,然后返回這個屬性或者方法

示例:

class A(object):
    def __init__(self,name):
        self.name=name
    def fun(self):
        print(f'我是{self.name}')
user=A('Jack')
print(user.name) #輸出 Jack
b=getattr(user,'name')
a=getattr(user,'age',18) #注意注意?。?!
print(user.age)#報錯的
c=getattr(user,'fun')
print(b,a)
c()
print(user.__dict__)
#輸出結果:
# Jack 18
# 我是Jack
# {'name': 'Jack'}

注意看,這里我a=getattr(user,'age',18),其中age不是這個實例化對象的屬性,只是我通過這個函數把18這個數字賦值給了c,實際上user和age并沒有參與這個賦值,因為user與age一定關系都沒有。下面通過__dict__就很明顯看出來

2.setattr() 函數

格式:

setattr(對象, "對象屬性", 值)

作用:

添加設置對象屬性

示例:

#給對象添加屬性
class A(object):
    def __init__(self,name):
        self.name=name
    def fun(self):
        print(f'我是{self.name}')
user=A('Jack')
#之前的做法:直接添加
user.age=18
print(user.age)
#通過字符串操作
setattr(user,'num','137***55***')
print(user.name,user.num)
print(user.__dict__)
#輸出結果:
# 18
# Jack 137***55***
# {'name': 'Jack', 'age': 18, 'num': '137***55***'}

3.hasattr() 函數

格式:

變量 = hasattr(對象, "對象屬性")

作用:

判斷對象是否有這個屬性以及方法 ,返回布爾類型

示例:

class A(object):
    def __init__(self,name):
        self.name=name
    def fun(self):
        print(f'我是{self.name}')
user=A('Jack')
print(hasattr(user,'age')) #False
print(hasattr(user,'name')) #True
print(hasattr(user,'fun')) #True

4.delattr() 函數

格式:

delattr(對象, 對象屬性)

作用:

刪除對象屬性或者方法

示例:

class A(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def fun(self):
        print(f'我是{self.name}')
user=A('Jack',18)#{'name': 'Jack', 'age': 18}
print(user.__dict__)
delattr(user,'age') 
#等效于 del user.age
print(user.__dict__)#{'name': 'Jack'}

可以看出,實例化對象user中的age屬性被刪除了

當然,這四個函數不單單可以在實例化對象使用,Python一切皆對象,所以一個模塊,一個函數都是可以去使用的,這里就不多說了。

到此這篇關于Python反射操作對象屬性方法詳解的文章就介紹到這了,更多相關Python反射操作對象內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python3解析庫BeautifulSoup4的安裝配置與基本用法

    python3解析庫BeautifulSoup4的安裝配置與基本用法

    簡單來說,BeautifulSoup就是Python的一個HTML或XML的解析庫,我們可以用它來方便地從網頁中提取數據,下面這篇文章主要給大家介紹了關于python3解析庫BeautifulSoup4的安裝配置與基本用法的相關資料,需要的朋友可以參考下
    2018-06-06
  • Python中表格插件Tabulate的用法小結

    Python中表格插件Tabulate的用法小結

    這篇文章主要介紹了Python中表格插件Tabulate的用法,Tabulate插件是一個功能強大、簡單易用的數據可視化工具,它能夠滿足我們在Python中進行表格數據展示的各種需求,通過使用Tabulate插件,我們能夠輕松地生成美觀且易讀的表格,需要的朋友可以參考下
    2023-11-11
  • Python淺析多態(tài)與鴨子類型使用實例

    Python淺析多態(tài)與鴨子類型使用實例

    python是一門解釋語言,但是同java等靜態(tài)語言一樣,是可以通過繼承的方式實現多態(tài)。而且python還有一個自己的特殊實現多態(tài)的方法,就是通過鴨子類型,來實現多態(tài)
    2022-10-10
  • Numpy中arange()的用法及說明

    Numpy中arange()的用法及說明

    Numpy的arange()函數用于在指定間隔內生成均勻間隔的數組,它接受開始值、停止值和步長來創(chuàng)建數組,返回的是ndarray類型,如果沒有提供dtype,則會根據其他參數推斷數據類型,對于浮點類型參數,結果數組的長度計算方式為ceil((stop-start)/step)
    2024-10-10
  • 跟老齊學Python之有容乃大的list(1)

    跟老齊學Python之有容乃大的list(1)

    這一講中的list類型,也是python的一種數據類型。翻譯為:列表。LIST在python中具有非常強大的功能。
    2014-09-09
  • python導出requirements.txt的幾種方法總結

    python導出requirements.txt的幾種方法總結

    這篇文章主要介紹了python導出requirements.txt的幾種方法總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python3實現發(fā)送QQ郵件功能(附件)

    Python3實現發(fā)送QQ郵件功能(附件)

    這篇文章主要為大家詳細介紹了Python3實現發(fā)送QQ郵件功能,附件方面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Pandas實現(pivot_table函數)數據透視表方式

    Pandas實現(pivot_table函數)數據透視表方式

    pandas的pivot_table()函數非常強大,主要用于創(chuàng)建數據透視表,重要參數包括index、values、columns和aggfunc,index用于設置行索引,類似于SQL中的group by,values用于進行聚合計算的數據選擇,columns參數可設置列層次,非必須
    2024-09-09
  • python中@property和property函數常見使用方法示例

    python中@property和property函數常見使用方法示例

    這篇文章主要介紹了python中@property和property函數常見使用方法,結合實例形式分析了Python @property和property函數功能、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-10-10
  • 如何在Python 游戲中模擬引力

    如何在Python 游戲中模擬引力

    這篇文章主要介紹了在你的 Python 游戲中模擬引力的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論