掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
利用裝飾property實(shí)現(xiàn)了對(duì)私有屬性的讀取和保護(hù),那么在VectorN中,如果我們需要通過vectorN.x\vectorN.y等方式讀取前幾個(gè)元素,是否也可以使用類似的方法呢?

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、北林ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的北林網(wǎng)站制作公司
答案當(dāng)然可以,但是我們可以這樣處理兩三個(gè)元素。如果是多個(gè)元素,我們應(yīng)該一個(gè)個(gè)創(chuàng)建方法,用property裝飾。Python提供了一種魔法方法__getattr___來處理這些問題。
__getattr__說明
1、當(dāng)Python解釋器試圖獲得一個(gè)實(shí)例屬性時(shí),在沒有實(shí)例字典的情況下,可以在其中找到類屬性。
2、如果沒有類屬性,可以在父類中找到,如果沒有,可以通過_getattr__函數(shù)獲得。
動(dòng)態(tài)存取屬性實(shí)例
def __getattr__(self, name):
attrStr = "xyzt"
if len(name) == 1:
index = attrStr.find(name)
if 0 <= index < len(self):
return self.contents[index]
raise IndexError("list index out of range")以上就是python動(dòng)態(tài)存取屬性的實(shí)現(xiàn),希望對(duì)大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流