在?Python?中如何為對(duì)象添加屬性
我們將介紹如何在 Python 中為對(duì)象添加屬性。 我們還將通過(guò)示例介紹如何在 Python 中更改對(duì)象的屬性。
在 Python 中為對(duì)象添加屬性
在 Python 中,我們時(shí)常使用對(duì)象,因?yàn)?Python 是一種面向?qū)ο蟮恼Z(yǔ)言。 對(duì)象使我們的代碼可重用并易于實(shí)現(xiàn)復(fù)雜的結(jié)構(gòu)。
對(duì)象的主要部分是它們的屬性。 屬性定義某個(gè)對(duì)象的屬性是什么。
在處理對(duì)象時(shí),可能有很多情況我們需要在程序中間向?qū)ο筇砑有聦傩浴?/p>
Python 提供了一個(gè)函數(shù) setattr() 可以方便地設(shè)置一個(gè)對(duì)象的新屬性。 這個(gè)函數(shù)甚至可以替換屬性的值。
它是一個(gè)函數(shù),借助它我們可以分配對(duì)象屬性的值。
該方法將為我們提供多種方法,通過(guò)某些構(gòu)造函數(shù)和對(duì)象函數(shù)為變量分配值。 通過(guò)使用這個(gè)功能,我們也將能夠有其他替代的方式來(lái)賦值。
現(xiàn)在,讓我們討論一下這個(gè) setattr() 函數(shù)的結(jié)構(gòu)。 構(gòu)造 setattr() 的結(jié)構(gòu)如下所示。
# python setattr(object, name, value)
從這個(gè)函數(shù)的語(yǔ)法中可以看出,我們將三個(gè)參數(shù)傳遞給函數(shù),然后它將允許我們?cè)O(shè)置對(duì)象的屬性。
共有三個(gè)參數(shù),說(shuō)明如下:
- object- 我們將傳遞我們創(chuàng)建的對(duì)象的名稱(chēng),并希望為其設(shè)置屬性。
- name- 這將是我們要為其分配值的對(duì)象的屬性名稱(chēng)。
- value- 我們將在此處傳遞屬性值。
讓我們來(lái)看一個(gè)例子,在這個(gè)例子中我們將創(chuàng)建一個(gè)學(xué)生班級(jí)。 我們將創(chuàng)建一個(gè)新學(xué)生并為其分配一些屬性,如下所示。
# python
class Students():
name = "Rana Hasnain"
roll_no = "BC140402269"
cgpa = 3.5
new_student = Students()
setattr(new_student, 'name', 'James Bond')
setattr(new_student, 'roll_no', '007')
setattr(new_student, 'cgpa', 4)
print("New Student Name:",new_student.name)
print("New Student Roll #:",new_student.roll_no)
print("New Student Cgpa:",new_student.cgpa)輸出:

從上面的示例中可以看出,設(shè)置我們創(chuàng)建的對(duì)象的屬性非常容易。 現(xiàn)在,讓我們討論一個(gè)不同的場(chǎng)景。
假設(shè)我們有一個(gè)新對(duì)象并且想要設(shè)置類(lèi)中缺少的屬性。
在某些情況下,沒(méi)有屬性,或者所有屬性都不是在一個(gè)類(lèi)中創(chuàng)建的。 發(fā)生這種情況時(shí),我們分配一個(gè)新屬性并可以為其設(shè)置一個(gè)值。
但要實(shí)現(xiàn)它,對(duì)象應(yīng)該實(shí)現(xiàn) __dict__() 方法。 讓我們通過(guò)一個(gè)例子,嘗試為一個(gè)不存在的屬性賦值。
我們將使用上面的示例并嘗試分配一個(gè)新屬性 degree,如下所示。
# python
class Students():
name = "Rana Hasnain"
roll_no = "BC140402269"
cgpa = 3.5
new_student = Students()
setattr(new_student, 'name', 'James Bond')
setattr(new_student, 'roll_no', '007')
setattr(new_student, 'cgpa', 4)
setattr(new_student, 'degree', 'BSCS')
print("New Student Name:",new_student.name)
print("New Student Roll #:",new_student.roll_no)
print("New Student Cgpa:",new_student.cgpa)
print("New Student Degree:",new_student.degree)輸出:

從上面的例子可以看出,該函數(shù)還可以創(chuàng)建不存在的新屬性并為其賦值。
到此這篇關(guān)于在 Python 中如何為對(duì)象添加屬性的文章就介紹到這了,更多相關(guān)Python 對(duì)象添加屬性?xún)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python通過(guò)websocket與js客戶(hù)端通信示例分析
網(wǎng)站大多使用 HTTP 協(xié)議通信,而 HTTP 是無(wú)連接的協(xié)議。只有客戶(hù)端請(qǐng)求時(shí),服務(wù)器端才能發(fā)出相應(yīng)的應(yīng)答, HTTP 請(qǐng)求的包也比較大,如果只是很小的數(shù)據(jù)通信,開(kāi)銷(xiāo)過(guò)大。于是,我們可以使用 websocket 這個(gè)協(xié)議,用最小的開(kāi)銷(xiāo)實(shí)現(xiàn)面向連接的通信。2014-06-06
pycharm-professional-2020.1下載與激活的教程
這篇文章主要介紹了pycharm-professional-2020.1下載與激活的教程,本文分為安裝和永久激活兩部分內(nèi)容,需要的朋友可以參考下2020-09-09
詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版)
這篇文章主要介紹了詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
python數(shù)據(jù)庫(kù)批量插入數(shù)據(jù)的實(shí)現(xiàn)(executemany的使用)
這篇文章主要介紹了python數(shù)據(jù)庫(kù)批量插入數(shù)據(jù)的實(shí)現(xiàn)(executemany的使用),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
一行python實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)的方法
今天小編就為大家分享一篇一行python實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
PyQt5 對(duì)圖片進(jìn)行縮放的實(shí)例
今天小編就為大家分享一篇PyQt5 對(duì)圖片進(jìn)行縮放的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Python數(shù)據(jù)類(lèi)型-序列sequence
這篇文章主要介紹了Python數(shù)據(jù)類(lèi)型-序列sequence,在前面,我們已經(jīng)對(duì)Python學(xué)習(xí)做了系統(tǒng)的知識(shí)梳理(Python思維導(dǎo)圖),我們接下來(lái)把知識(shí)點(diǎn)分節(jié)進(jìn)行細(xì)講。這一節(jié),我們講解序列,需要的朋友可以參考下2022-01-01

