JavaBeans在Python中的實(shí)現(xiàn)-創(chuàng)新互聯(lián)

在JavaBeans中有這樣的一個(gè)描述:當(dāng)一些信息需要使用類似于字典嵌套字典再嵌套列表這種很深的結(jié)構(gòu)來儲存的時(shí)候,請改用類來儲存。實(shí)際上,這樣的思想也可以用于Python中。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了樂都免費(fèi)建站歡迎大家使用!場景:

在Python中,以前可能會這樣寫嵌套字典結(jié)構(gòu)

school_list = [{'school_name': 'SZ',
    'class_id': '001',
    'stu_num': 45,
    'student':{'stu_id': '001',
        'stu_name': 'xiaohong',
        'stu_score': 90
    }
},
{'school_name': 'Fxxking U',
    'class_id': '002',
    'stu_num': 40,
    'student':{'stu_id': '002',
        'stu_name': 'xiaobai',
        'stu_score': 98
    }
}]

而當(dāng)我們要訪問比較深層結(jié)構(gòu)中的數(shù)據(jù)時(shí)可能要這樣:

print(school_list[0]['student']['stu_id'])

這樣在取用時(shí)未免太麻煩,而且一旦嵌套結(jié)構(gòu)越深層,取用時(shí)就越麻煩。

JavaBeans in Python

如果借鑒JavaBeans的思維,將此用類實(shí)現(xiàn),會是以下這樣:

# School.py
class School(object):
    def __init__(self,school_name='',class_id='',stu_num=0,student=None) ->None:
        self._school_name = school_name
        self._class_id = class_id
        self._stu_num = stu_num
        self._student = student

    @property
    def school_name(self):
        return self._school_name

    @school_name.setter
    def school_name(self,new_name):
        self._school_name = new_name

    
    @property
    def class_id(self):
        return self._class_id

    @class_id.setter
    def class_id(self,new_id):
        self._class_id = new_id

    
    
    @property
    def stu_num(self):
        return self._stu_num

    @stu_num.setter
    def stu_num(self,new_num):
        self._stu_num = new_num


    @property
    def student(self):
        return self._student

    @student.setter
    def student(self,new_student):
        self._student = new_student
# Student.py
class Student(object):
    def __init__(self,stu_id='',stu_name='',stu_score=0) ->None:
        self._stu_id = stu_id
        self._stu_name = stu_name
        self._stu_score = stu_score


    @property
    def stu_id(self):
        return self._stu_id
    

    @stu_id.setter
    def stu_id(self,new_id):
        self._stu_id = new_id


    @property
    def stu_name(self):
        return self._stu_name
    

    @stu_name.setter
    def stu_name(self,new_name):
        self._stu_name = new_name



    @property
    def stu_score(self):
        return self._stu_score
    

    @stu_score.setter
    def stu_score(self,new_score):
        self._stu_score = new_score

我們將原有的嵌套字典數(shù)據(jù)轉(zhuǎn)換為兩個(gè)類實(shí)現(xiàn),且分別在School.py與Student.py兩個(gè)文件中,在類中我們對原本的數(shù)據(jù)以裝飾器粉飾為屬性從而使其可以進(jìn)行讀取與修改。這樣一來,我們就可以用類屬性的方式去訪問我們想要的數(shù)據(jù)。
程序代碼:

from School import School
from Student import Student


student_007 = Student(stu_id='007',stu_name='零零漆',stu_score=99)
school_Princeton = School(school_name='Princeton U',class_id='005',stu_num=1000,student=student_007)

student_qnc = Student(stu_id='250',stu_name='千年蟲',stu_score=60)
school_Fuxxking = School(school_name='Fuxxking U',class_id='009',stu_num=500,student=student_qnc)


school_list = [school_Princeton,school_Fuxxking]

for i in school_list:
    print(i.school_name)
    print(i.class_id)
    print(i.stu_num)
    stu = i.student
    print(stu.stu_name)

輸出結(jié)果:

Princeton U
005
1000
零零漆
Fuxxking U
009
500
千年蟲

總結(jié):將深層次的嵌套結(jié)果轉(zhuǎn)換為用類實(shí)現(xiàn)的好處是,在初始化類對象后,可以直接使用實(shí)例.屬性的方式訪問想要的數(shù)據(jù),且關(guān)鍵數(shù)據(jù)在類中定義的很詳細(xì)。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前名稱:JavaBeans在Python中的實(shí)現(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.muchs.cn/article0/depsio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、ChatGPT搜索引擎優(yōu)化、網(wǎng)站收錄、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司