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

Python反射操作對(duì)象屬性方法詳解

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

前言:

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

所以今天我來(lái)講其他方法去操作實(shí)例化對(duì)象的屬性方法,看正文:

反射

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

對(duì)象反射這里提供了以下幾個(gè)內(nèi)置字符串函數(shù):

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

下面進(jìn)行一一細(xì)講

1.getattr() 函數(shù)

 格式:

變量名 = getattr(對(duì)象, 對(duì)象屬性, 默認(rèn)值)

作用:

獲取指定對(duì)象的屬性以及方法,然后返回這個(gè)屬性或者方法

示例:

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)#報(bào)錯(cuò)的
c=getattr(user,'fun')
print(b,a)
c()
print(user.__dict__)
#輸出結(jié)果:
# Jack 18
# 我是Jack
# {'name': 'Jack'}

注意看,這里我a=getattr(user,'age',18),其中age不是這個(gè)實(shí)例化對(duì)象的屬性,只是我通過這個(gè)函數(shù)把18這個(gè)數(shù)字賦值給了c,實(shí)際上user和age并沒有參與這個(gè)賦值,因?yàn)閡ser與age一定關(guān)系都沒有。下面通過__dict__就很明顯看出來(lái)

2.setattr() 函數(shù)

格式:

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

作用:

添加設(shè)置對(duì)象屬性

示例:

#給對(duì)象添加屬性
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__)
#輸出結(jié)果:
# 18
# Jack 137***55***
# {'name': 'Jack', 'age': 18, 'num': '137***55***'}

3.hasattr() 函數(shù)

格式:

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

作用:

判斷對(duì)象是否有這個(gè)屬性以及方法 ,返回布爾類型

示例:

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() 函數(shù)

格式:

delattr(對(duì)象, 對(duì)象屬性)

作用:

刪除對(duì)象屬性或者方法

示例:

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'}

可以看出,實(shí)例化對(duì)象user中的age屬性被刪除了

當(dāng)然,這四個(gè)函數(shù)不單單可以在實(shí)例化對(duì)象使用,Python一切皆對(duì)象,所以一個(gè)模塊,一個(gè)函數(shù)都是可以去使用的,這里就不多說了。

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

相關(guān)文章

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

    python3解析庫(kù)BeautifulSoup4的安裝配置與基本用法

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

    Python中表格插件Tabulate的用法小結(jié)

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

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

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

    Numpy中arange()的用法及說明

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

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

    這一講中的list類型,也是python的一種數(shù)據(jù)類型。翻譯為:列表。LIST在python中具有非常強(qiáng)大的功能。
    2014-09-09
  • python導(dǎo)出requirements.txt的幾種方法總結(jié)

    python導(dǎo)出requirements.txt的幾種方法總結(jié)

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

    Python3實(shí)現(xiàn)發(fā)送QQ郵件功能(附件)

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

    Pandas實(shí)現(xiàn)(pivot_table函數(shù))數(shù)據(jù)透視表方式

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

    python中@property和property函數(shù)常見使用方法示例

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

    如何在Python 游戲中模擬引力

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

最新評(píng)論